假设我有一个空表“ TABLE_1
”。然后我使用;
SET IDENTITY_INSERT TABLE_1 ON
插入一些数据(包括主键)。
之后我停用IDENTITY_INSERT
并想要插入其他值(默认方式,即没有主键)。如何SQL
计算新的主键值?是不是像:
MAX(ID) + 1
在此先感谢
尤根
假设我有一个空表“ TABLE_1
”。然后我使用;
SET IDENTITY_INSERT TABLE_1 ON
插入一些数据(包括主键)。
之后我停用IDENTITY_INSERT
并想要插入其他值(默认方式,即没有主键)。如何SQL
计算新的主键值?是不是像:
MAX(ID) + 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
这意味着,不需要重新播种:-),这很棒。
PS:我使用的是 SQL Server 2008
取自 SQL Server 文档:
http://technet.microsoft.com/en-us/library/ms188059.aspx
如果插入的值大于表的当前标识值,SQL Server 会自动使用新插入的值作为当前标识值。