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

ทำไมใน MySQL AUTO_INCREMENT จึงมีลำดับความสำคัญมากกว่า PRIMARY KEY

เข้าใจได้จากตัวอย่างที่ INSERT ค่า NULL ลงคอลัมน์ AUTO_INCREMENT และ MySQL สร้างลำดับใหม่:

mysql> CREATE TABLE employeeinfo(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(10));
Query OK, 0 rows affected (0.16 sec)

mysql> INSERT INTO employeeinfo(id, Name) VALUES(NULL, 'Saurabh');
Query OK, 1 row affected (0.07 sec)

mysql> SELECT * FROM employeeinfo;
+----+---------+
| id | Name    |
+----+---------+
| 1  | Saurabh |
+----+---------+
1 row in set (0.00 sec)

สังเกตได้ว่าคอลัมน์ id ประกาศ NOT NULL และ PRIMARY KEY แต่ยอมรับค่า NULL ได้ เพราะประกาศเป็น AUTO_INCREMENT ด้วย MySQL จึงสร้างลำดับแม้ INSERT NULL

ในทางตรงข้าม หาก INSERT NULL ลงคอลัมน์ที่เป็น PRIMARY KEY แต่ไม่ใช่ AUTO_INCREMENT MySQL จะแสดงข้อผิดพลาด:

mysql> CREATE TABLE people(id INT PRIMARY KEY, name VARCHAR(10));
Query OK, 0 rows affected (0.18 sec)

mysql> INSERT INTO people(id, name) VALUES(NULL, 'Rahul');
ERROR 1048 (23000): Column 'id' cannot be null

ดังนั้น AUTO_INCREMENT มีลำดับความสำคัญมากกว่า (precedes) ข้อจำกัด PRIMARY KEY เพราะกระบวนการ AUTO_INCREMENT ต้องถูกแก้ไขก่อนการตรวจสอบ PRIMARY KEY ในทุกกรณี