在mysql中同时使用自动增量和主键有什么意义?

lrl1mhuk  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(401)

在mysql中,我理解如下 AUTO_INCREMENT :用于制作 INT 每次用户创建行时自动增加的值。 PRIMARY KEY :用于制作 value 在那张table上是独一无二的。
但是,我经常看到它们在定义 id .
我不明白使用 AUTO_INCREMENTPRIMARY KEYAUTO_INCREMENT 它本身会使 id 独一无二。
有没有什么理由在创建时将它们一起使用 id ?

wydwbb8l

wydwbb8l1#

主键有三个属性:
它是独一无二的。
它是非空的。
每张table只有一张。
将键定义为主键意味着它也应该用于外键引用。
另外,mysql通过主键对数据进行聚类。因此,该声明指示新行位于表的“末尾”——即与数据页上最近的插入相邻。
此外,可以通过各种方式为自动递增的id创建重复值。一种方法是可以重置增量计数器,从而导致重复。mysql对于并发更新的副本应该是相当线程安全的,但是已经报告了错误。作为一个 primary key ,表中不允许有重复项。

dphi5xsq

dphi5xsq2#

你理解得对,但他们做的事情不同。 PRIMARY KEYAUTO_INCREMENT 意味着我们希望此列在值上不重复,如果未设置值,它将自动增加。
但我们只设 AUTO_INCREMENT 它只意味着如果我们没有设置值,它将自动增加。但没有确定这个值是唯一的。

5sxhfpxr

5sxhfpxr3#

AUTO_INCREMENT 不会使列唯一。它只在创建行时“自动”填充值(如果缺少)。但是您可以稍后更新这些值,或者通过显式提供值来创建一行。 PRIMARY KEY 拒绝任何会导致两个不同条目存储相等值的修改sql语句。因此,它保证您的数据库处于正确的状态。

相关问题