在MySQL中,我理解如下
AUTO_INCREMENT
:用于使INT
的值在用户每次创建一行时自动增加。
PRIMARY KEY
:用于使value
在该表中唯一。
但是,我经常看到它们在定义id
时一起使用。
我不理解将AUTO_INCREMENT
与PRIMARY KEY
一起使用的意义,因为AUTO_INCREMENT
本身会使id
唯一。
创建id
时将它们一起使用是否有任何原因?
答案 0 :(得分:2)
主键具有三个属性:
将键定义为主键意味着它也应用于外键引用。
此外,MySQL通过主键对数据进行群集。因此,声明会指示新行进入表的“末尾”,这意味着与数据页上的最新插入相邻。
此外,可以通过各种方式创建自动递增的id的重复值。一种方法是可以重置增量计数器,从而导致重复。对于并发更新,MySQL应该在重复项上具有相当的线程安全性,但是已经报告了错误。作为primary key
,表中不允许重复。
答案 1 :(得分:1)
您理解正确,但是他们在做不同的事情。
PRIMARY KEY
和AUTO_INCREMENT
表示我们希望此列在值上不重复,如果不设置该值,它将自动增加。
但是我们只设置AUTO_INCREMENT
怎么样,这仅意味着如果不设置该值,它将自动增加。但不能确保该值是唯一的。
答案 2 :(得分:1)
AUTO_INCREMENT
不能使列唯一。创建行时,如果丢失,它只会“自动”填充值。但是您以后可以更新值,也可以通过显式提供值来创建行。
PRIMARY KEY
拒绝任何会导致2个不同条目存储相等值的修改sql语句。这样可以保证您的数据库处于正确状态。