Điều này có thể hiểu qua ví dụ mà giá trị NULL đã được chèn vào cột AUTO_INCREMENT và MySQL cung cấp số dãy 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ư quan sát từ ví dụ trên, cột 'id' được khai báo NOT NULL và PRIMARY KEY nhưng vẫn chấp nhận giá trị NULL. Đó là vì cột 'id' cũng được khai báo AUTO_INCREMENT. Do đó, MySQL trả về số dãy ngay cả khi chèn NULL vào cột đó.
Ngược lại, nếu thử chèn NULL vào cột khai báo PRIMARY KEY nhưng không phải AUTO_INCREMENT, MySQL trả về 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 đó, ta có thể nói AUTO_INCREMENT ưu tiên hơn ràng buộc PRIMARY KEY vì quá trình AUTO_INCREMENT cần được giải quyết trước khi kiểm tra ràng buộc PRIMARY KEY trong mọi trường hợp.