MySQL MySQL中,AUTO_INCREMENT优先级高于PRIMARY KEY,我们如何判断?

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 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程