0

在写论文时,我正在写关于 SQL 数据类型以及在设计数据库结构时如何明智地选择它们的部分。

我在某处读到,作为最佳实践,您不应该为 PK 分配负值。这导致了以下问题:

默认情况下,SQL Server 实例会为主键分配负值吗?我知道可以自己分配它们,但我想知道 SQL 服务器是否会默认分配它们,如果是,在哪些情况下?

4

2 回答 2

0

我假设,但我从未尝试过,如果您创建一个指定为 的主键IDENTITY(0,-1),它将自动分配从 0 开始的降序值

于 2015-04-17T09:46:24.747 回答
-1

Primary KeyIdentity之间存在区别。Identity属性在表中创建一个标识列,语法:

IDENTITY [ ( seed , increment ) ]

其中increment是添加到加载的前一行的标识值的增量值,可以是 + 或 - 取决于要求。

主键是包含唯一标识表中每一行的值的列或列组合。如果它们保证表中行的唯一标识,则它可以是除 Identity 列之外的任何列集。

回到这个问题,一个表只能有一个 PRIMARY KEY 约束,而参与 PRIMARY KEY 约束的列不能接受空值。因为 PRIMARY KEY 约束保证数据的唯一性,所以它们经常在标识列上定义。

因此 SQL Server 不会为主键分配任何默认值,因为它是一个约束。为表指定 PRIMARY KEY 约束时,数据库引擎通过为主键列创建唯一索引来强制数据唯一性。

于 2015-04-17T10:43:12.430 回答