Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể nói rằng trong MySQL, AUTO_INCREMENT được ưu tiên hơn KEY CHÍNH?

Điều này có thể được hiểu với sự trợ giúp của một ví dụ trong đó giá trị NULL đã được chèn vào cột AUTO_INCREMENT và MySQL cung cấp một số thứ tự mới.

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)

Như chúng ta có thể quan sát từ ví dụ trên rằng cột ‘id’ đã được khai báo NOT NULL cũng như bit PRIMARY KEY vẫn chấp nhận giá trị NULL. Đó là vì cột ‘id’ cũng đã được khai báo là AUTO_INCREMENT. Do đó, MySQL trả về số thứ tự ngay cả khi chúng ta chèn giá trị NULL vào cột đó.

Trong Ngược lại, nếu chúng ta cố gắng chèn NULL vào một cột được khai báo là PRIMARY KEY nhưng không phải AUTO_INCREMENT thì MySQL sẽ trả về một lỗi như sau -

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

Do đó, chúng ta có thể nói rằng AUTO_INCREMENT đứng trước ràng buộc KHÓA CHÍNH vì quá trình AUTO_INCREMENT cần được giải quyết sớm hơn để kiểm tra ràng buộc KHÓA CHÍNH trong mọi trường hợp.