ใช้ MYSQL สร้าง 실행 번호

5129 단어 programmingmysql
เอกสาร เอกสาร อย่าง อย่าง ระบบ ระบบ ต้องการ ให้ มี มี เลขนับ เลขนับ ต่อ ไป ไป เรื่อย ๆ เช่น เช่น เช่น เช่น เช่น inv0001-inv9999 ถ้า เรา ใช้ ใช้ mysql อยู่ แล้ว มา มา ดู กัน ว่า จะ จะ เอา มัน มา ช่วย สร้าง สร้าง สร้าง แบบ นี้ ได้ ได้ ยัง ไง ไง บ้าง สร้าง ช่วย ช่วย

สมมติเราทำระบบบัญชี ซึ่งลูกค้าแต่ละคนก็จะมี Invoice Number ที่มี running number เป็นของตัวเองเช่น User A ล่าสุดออก INV0100 อันต่อไปก็ต้องเป็น INV0101 ส่วน User B ล่าสุดออก INV0222 ต่อไปก็ต้องเป็น INV0223

เรามีข้อมูลตาราง 사용자 คร่าวๆแบบนี้

CREATE TABLE users (
  id INTEGER AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(256)
);


เราให้ MYSQL ช่วย เก็บ 실행 번호 ของ แต ่ละ 사용자 ได้โดยสร้างอีกตาราง แบบนี้

CREATE TABLE inv_numbers (
  id INTEGER AUTO_INCREMENT PRIMARY KEY,
  user_id INTEGER NOT NULL UNIQUE,
  number INTEGER NOT NULL,
  FOREIGN KEY (user_id) REFERENCES users(id)
);


เรา เรา เรา ให้ user_id เป็น เป็น 외국 키 และ 고유 키 เพื่อ ลิ้ง ลิ้ง กลับ ไป ว่า 레코드 레코드 เป็น 실행 번호 ของ ของ คน แบบ แบบ นี้ แต่ละ แต่ละ แต่ละ มี มี มี ได้ ได้ แค่ 레코드 เดียวแน่นอน

ด้วย ด้วย แบบ แบบ ตาราง เรา สามารถ ใช้ INSERT ... ON DUPLICATE KEY UPDATE Statement ช่วย เพิ่ม ค่า ค่า ของ number ไป ที ที ละ ละ 1 และ และ ถ้า ยัง ยัง ไม่ มี มี 숫자 레코드 มา มา ก่อน ให้ เริ่ม ที่ ที่ 1 ได้ แบบ แบบ นี้ โดย โดย สมมติ เป็น ของ ของ ของ ของ ของ เท่า 1 เท่า 1

INSERT INTO users (name) VALUES ("Weerasak");



mysql> SELECT * FROM users;
+----+----------+
| id | name     |
+----+----------+
|  1 | Weerasak |
+----+----------+



INSERT INTO inv_numbers (user_id, number) VALUES (1, 1)
  ON DUPLICATE KEY UPDATE number=number+1;



mysql> SELECT * FROM inv_numbers;
+----+---------+--------+
| id | user_id | number |
+----+---------+--------+
|  1 |       1 |      1 |
+----+---------+--------+
1 row in set (0.00 sec)

mysql> INSERT INTO inv_numbers (user_id, number) VALUES (1, 1)   ON DUPLICATE KEY UPDATE number=number+1;
Query OK, 2 rows affected (0.01 sec)

mysql> SELECT * FROM inv_numbers;
+----+---------+--------+
| id | user_id | number |
+----+---------+--------+
|  1 |       1 |      2 |
+----+---------+--------+
1 row in set (0.00 sec)


จะ จะ จะ ว่า เห็น เรา 삽입 แบบ เดิม เดิม อีก ครับ ครับ mysql จะ เช็ค 고유 키 ว่า มี มี มี แล้ว หรือ ยัง ถ้า มี แล้ว แล้ว จะ เลือก ส่วน 업데이트 คือ 숫자 = 번호+1 ให้ เรา เอง เอง

Race เรื่อง เรื่อง นี้ นี้ เรา ไม่ ต้อง จัด การ เรื่อง 경주 조건 ใน การ การ เพิ่ม ค่า ของ ของ ของ เอง เอง เอง ถ้า ถ้า ถ้า คน กัน สั่ง สร้าง สร้าง in 송장 번호 พร้อม ๆ กัน เพราะ เพราะ mysql จัด เรื่อง เรื่อง 일관성 ของ ข้อมูล ให้ ให้ เรา เอง อยู่ แล้ว แล้ว

좋은 웹페이지 즐겨찾기