是否建议使用 Identity 作为主键的替代?

Jac*_*ack 11 sql-server primary-key identity

我们可以声明一个Identitylikeid_numid_num增加唯一的数字。

CREATE TABLE new_employees
(
  id_num int IDENTITY(1,1),
  fname varchar (20),
  minit char(1),
  lname varchar(30)
)
Run Code Online (Sandbox Code Playgroud)

是否建议将其Identity用作替代方案,Primary key因为Identity为每一行提供了唯一编号?

Ken*_*her 27

Identity columns并且Primary Keys是两个非常不同的东西。AnIdentity column提供一个自动递增的数字。这就是它所做的一切。将Primary Key(在SQL Server中至少)是一个独特的约束,保证唯一性和通常(但并不总是)聚集键。同样在 MS SQL Server 中,它也是一个索引(在某些 RDBMS 中,它们并没有那么紧密地联系在一起)。作为索引,它提供更快的查找等。经常Identity columns被用作Primary Key如果没有好处natural key存在,但不是替代品。

  • @Andomar PK 是一个逻辑实体。PK 的支持指标是物理的。并且非聚集索引可以支持PK,不一定非得是聚集索引。因此,如果 PK 的索引是 NCI,则您的陈述是不正确的。它是 NCI 叶级的聚集索引键。 (2认同)

Gre*_*ker 5

不,不是,因为身份并不能保证唯一值。可以绕过标识属性SET IDENTITY_INSERT <schema>.<table> ON(在 SQL Server 中 - 您没有指定正在使用的 RDBMS)。

主键约束(和唯一约束)使用唯一索引来强制唯一性。

  • 它不保证唯一值。但也没有其他任何事情。任何有权访问数据库的人都可以尝试向主键插入重复值。身份的作用是使生成唯一值更容易(尤其是当您没有像 Kenneth Fisher 所说的那样好的自然键时)。您可以使用主键声明一个整数字段,它是完全相同的,但没有自动生成。所以 IDENTITY 是用于生成的,关键是用于*强制*唯一性。 (5认同)