在MySQL中同时使用AUTO_INCREMENT和PRIMARY KEY有什么意义?

时间:2018-11-11 16:14:47

标签: mysql sql primary-key auto-increment

在MySQL中,我理解如下


AUTO_INCREMENT:用于使INT的值在用户每次创建一行时自动增加。

PRIMARY KEY:用于使value在该表中唯一。


但是,我经常看到它们在定义id时一起使用。

我不理解将AUTO_INCREMENTPRIMARY KEY一起使用的意义,因为AUTO_INCREMENT本身会使id唯一。

创建id时将它们一起使用是否有任何原因?

3 个答案:

答案 0 :(得分:2)

主键具有三个属性:

  1. 这是独一无二的。
  2. 它不是空的。
  3. 每个表只有一个。

将键定义为主键意味着它也应用于外键引用。

此外,MySQL通过主键对数据进行群集。因此,声明会指示新行进入表的“末尾”,这意味着与数据页上的最新插入相邻。

此外,可以通过各种方式创建自动递增的id的重复值。一种方法是可以重置增量计数器,从而导致重复。对于并发更新,MySQL应该在重复项上具有相当的线程安全性,但是已经报告了错误。作为primary key,表中不允许重复。

答案 1 :(得分:1)

您理解正确,但是他们在做不同的事情。

PRIMARY KEYAUTO_INCREMENT表示我们希望此列在值上不重复,如果不设置该值,它将自动增加。

但是我们只设置AUTO_INCREMENT怎么样,这仅意味着如果不设置该值,它将自动增加。但不能确保该值是唯一的。

答案 2 :(得分:1)

AUTO_INCREMENT不能使列唯一。创建行时,如果丢失,它只会“自动”填充值。但是您以后可以更新值,也可以通过显式提供值来创建行。

PRIMARY KEY拒绝任何会导致2个不同条目存储相等值的修改sql语句。这样可以保证您的数据库处于正确状态。