MySQL MySQL中,AUTO_INCREMENT优先级高于PRIMARY KEY,我们如何判断?
通过一个例子,我们可以理解。在例子中,我们在一个AUTO_INCREMENT列中插入了NULL值,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。由于此原因,即使我们在该列中插入NULL值,MySQL也会返回序列号。
相反,如果我们试图在一个PRIMARY KEY列中插入NULL,但没有声明为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优先于PRIMARY KEY约束,因为在任何情况下,处理AUTO_INCREMENT流程都需要在PRIMARY KEY约束检查之前解决。
阅读更多:MySQL 教程
极客教程