Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL คืนค่าอะไรเมื่อ ALTER AUTO_INCREMENT ให้ค่าน้อยกว่าลำดับปัจจุบัน

เมื่อใช้ AUTO_INCREMENT บนคอลัมน์ MySQL ลำดับจะเพิ่มขึ้นเรื่อยๆ เริ่มจากค่าเริ่มต้น 1 หรือค่าที่ระบุ ไม่สามารถเปลี่ยนค่า AUTO_INCREMENT ให้ต่ำกว่าลำดับปัจจุบันได้ สาธิตด้วยตัวอย่าง:

ตัวอย่าง

มีตาราง emp1 ระบุ AUTO_INCREMENT = 100 ตอนสร้างตาราง หลัง INSERT ลำดับเริ่มจาก 100:

mysql> SELECT * FROM emp1;
+-----+---------+
| id  | NAME    |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
+-----+---------+
2 rows in set (0.00 sec)

พยายามเปลี่ยน AUTO_INCREMENT = 90:

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90;
Query OK, 2 rows affected (0.31 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> INSERT INTO emp1(name) VALUES('Aryan');
Query OK, 1 row affected (0.08 sec)

mysql> SELECT * FROM emp1;
+-----+---------+
| id  | NAME    |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
| 102 | Aryan   |
+-----+---------+
3 rows in set (0.00 sec)

MySQL ไม่ผิดพลาด แต่เมื่อ INSERT ใหม่ จะเปรียบเทียบค่า AUTO_INCREMENT ที่ระบุ (90) กับลำดับปัจจุบัน (101) เนื่องจาก 90 < 101 จึงเริ่มสร้างลำดับจาก 102 ต่อไป

ในทางตรงข้าม หากระบุค่า AUTO_INCREMENT สูงกว่าลำดับปัจจุบัน MySQL จะเริ่มสร้างจากค่าที่ระบุ เช่น เปลี่ยนเป็น 108:

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 108;
Query OK, 3 rows affected (0.30 sec)

mysql> INSERT INTO emp1(name) VALUES('Daksh');
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO emp1(name) VALUES('Yashraj');
Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM emp1;
+-----+---------+
| id  | NAME    |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
| 102 | Aryan   |
| 108 | Daksh   |
| 109 | Yashraj |
+-----+---------+
5 rows in set (0.00 sec)