假设我有一个空表“TABLE_1
”。然后我用;
SET IDENTITY_INSERT TABLE_1 ON
插入一些数据(包括主键)。
之后我停用IDENTITY_INSERT
并想要插入其他值(默认方式,即没有主键)。 SQL
如何计算新的主键值?它是这样的:
MAX(ID) + 1
提前致谢
欧根
答案 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会自动使用新插入的值作为当前标识值。