PRIMARY KEY的SQL计算(自动增量)

时间:2013-09-12 11:00:19

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

假设我有一个空表“TABLE_1”。然后我用;

 SET IDENTITY_INSERT TABLE_1 ON

插入一些数据(包括主键)。

之后我停用IDENTITY_INSERT并想要插入其他值(默认方式,即没有主键)。 SQL如何计算新的主键值?它是这样的:

MAX(ID) + 1

提前致谢
欧根

2 个答案:

答案 0 :(得分:1)

我做了一些测试:

CREATE TABLE tmp.test (
    ID INT IDENTITY PRIMARY KEY,
    val NVARCHAR(255)
)

INSERT INTO tmp.test (val) values ('run_1.1')

SET IDENTITY_INSERT tmp.test ON
INSERT INTO tmp.test (ID, val) values
(112, 'run_2.1'), (2, 'run_2.2'), (45, 'run_2.3')
SET IDENTITY_INSERT tmp.test OFF

INSERT INTO tmp.test (val) values ('run_3.1'), ('run_3.2')

select * from tmp.test

结果是:

ID  val
1   run_1.1
2   run_2.2
45  run_2.3
112 run_2.1
113 run_3.1
114 run_3.2

这意味着,不需要重新种植:-),这很棒。

P.S。:我正在使用SQL Server 2008

答案 1 :(得分:0)

取自SQL Server文档:

http://technet.microsoft.com/en-us/library/ms188059.aspx

如果插入的值大于表的当前标识值,SQL Server会自动使用新插入的值作为当前标识值。