-1

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

 SET IDENTITY_INSERT TABLE_1 ON

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

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

MAX(ID) + 1

在此先感谢
尤根

4

2 回答 2

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

于 2013-09-12T12:16:49.900 回答
0

取自 SQL Server 文档:

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

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

于 2013-09-12T14:17:43.417 回答