在撰写论文时,我正在撰写关于SQL数据类型的部分内容,以及在设计数据库结构时如何明智地选择它们。
我在某处读到,作为最佳实践,您不应该为PK分配负值。这导致了以下问题:
默认情况下,SQL Server实例会将否定值分配给主键吗?我知道可以自己分配,但我想知道SQL服务器是否会默认分配它们,如果是,在哪些情况下?
答案 0 :(得分:0)
我假设,但我从未尝试过,如果您创建一个名为IDENTITY(0,-1)
的主键,它将自动分配从0开始的降序值
答案 1 :(得分:-1)
Primary Key
和Identity之间存在差异。Identity
属性在表格中使用语法创建标识列:
IDENTITY [ ( seed , increment ) ]
其中increment
是添加到已加载的上一行的标识值的增量值,可以是+或 - 取决于要求。
和主键是列或列的组合,其中包含唯一标识表中每一行的值。如果它们是表中行的唯一标识,则它可以是Identity列以外的任何列。
回到问题,表只能有一个PRIMARY KEY约束,参与PRIMARY KEY约束的列不能接受空值。 因为PRIMARY KEY约束保证了唯一数据,所以它们经常在标识列上定义。
因此SQL服务器不会将任何默认值分配给主键,因为它是一个约束。为表指定PRIMARY KEY约束时,数据库引擎通过为主键列创建唯一索引来强制实施数据唯一性。