SQL Server中自动增量,唯一,非空主键的最低要求

时间:2016-09-12 05:34:06

标签: sql sql-server primary-key auto-increment identity

我已经看到很多CREATE TABLE语句的例子用于使用NOT NULL,UNIQUE,IDENTITY,AUTO_INCREMENT等声明主键,但我不确定设置a的最低要求是什么具有自动增量主键列的表(类型为int)。

所以我猜这是我的问题:

设置自动递增的主键的最低要求是什么,是唯一的,并且不允许空值?

2 个答案:

答案 0 :(得分:1)

根据定义,主键是唯一的。身份默认为NOT NULL。因此,您可以使用以下语法:

CREATE TABLE T1
(
    Id int identity PRIMARY KEY
)

如果您想要一些有意义的名称,而不是上面自动分配的PK__T1__3214EC0744F9FA13,您应该遵循以下语法:

CREATE TABLE T2
(
    Id int IDENTITY CONSTRAINT PK_Id PRIMARY KEY
)

答案 1 :(得分:0)

如果您正在将列指定为主键,那么它将自己使该列唯一,并且它不允许该列中的NULL值。

然后开始识别..身份将为列的每个插入分配自动增量数字。标识列不应该是主键。

将标识列设置为主键没有这样的最低要求。通常,如果没有其他列唯一标识表中的特定记录,我们将转到Identity列。如果列是整数类型,则排序和索引将更有效。

在您的情况下,您只需添加一个以int作为数据类型的列ID,将其设置为identity并将主键分配给该列。

    CREATE TABLE [YourTable]
     (
        [ID] [int] IDENTITY (1,1)
          CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED ([ID] ASC)
      ) ON [PRIMARY]
     GO