SQL Server默认分配负PK值

时间:2015-04-17 09:42:59

标签: sql sql-server tsql primary-key-design

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

Primary KeyIdentity之间存在差异。Identity属性在表格中使用语法创建标识列:

IDENTITY [ ( seed , increment ) ]

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

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

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

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