在SQL Server 2008中为零主键

时间:2010-12-07 06:15:20

标签: sql sql-server-2008

是否可以在SQL Server 2008中的表的主键字段中插入0

2 个答案:

答案 0 :(得分:6)

只要它是一个数字字段,是的......跟随在家里!

create table TestTable
(
    TestColumn int not null primary key
)

insert TestTable values(0)

primary key限制只要求该值唯一且列不可为空。

对于identity字段:

create table TestTable
(
    TestColumn int identity(1, 1) not null primary key --start at 1
)

set identity_insert TestTable on
insert TestTable (TestColumn) values (0) --explicitly insert 0
set identity_insert TestTable off

identity(1, 1)表示“从一开始,每次插入一个时加1”。您可以identity(-100, 10)-100开始,每次增加10。或者你可以从0开始。没有限制。

您通常可以通过尝试并查看它们是否有效来回答这些问题。这比在StackOverflow上询问更快,通常更有益。

答案 1 :(得分:0)

是的,它可以为零。该值可以是-2,147,483,648到2,147,483,647,从 - (2 ^ 31)到2 ^ 31 - 1,是无符号整数的整个范围。

如果你期望有大量的记录,比如高达43亿,那么从最小的价值开始是有意义的,并且一路走来。

CREATE TABLE TestTable
(
    TestColumn INT IDENTITY(−2,147,483,648, 1) NOT NULL PRIMARY KEY --start at 1
)