admin

如何在SQL Server表中插入一个auto_increment键

sql

我想将行插入具有唯一,非自动递增主键的表中。

是否有本机SQL函数来评估最后一个键并将其递增,还是我必须分两个步骤进行操作:

key = select max(primary.key) + 1

INSERT INTO dbo.TABLE (primary.key, field1, fiels2) VALUES (KEY, value1, value2)

阅读 156

收藏
2021-05-10

共1个答案

admin

从整个注释来看,您在表上有一个主键,而不是标识列。

如果您的SQL Server版本是SQL 2012,则应查看序列:http : //msdn.microsoft.com/zh-
cn/library/ff878091.aspx

在其他版本中,您需要使用IDENTITY属性(http://msdn.microsoft.com/zh-
cn/library/aa933196(v=sql.80).aspx)重新创建表,或者使用主键列来重新创建表。两步法。

如果采用两步法,则需要确保并发运行的插入最终不会使用相同的新值。最简单的方法是将select和insert组合为一个值,并使用可序列化的表提示:

CREATE TABLE dbo.Tbl1(id INT PRIMARY KEY, val1 INT, val2 INT)

INSERT INTO dbo.Tbl1(id, val1, val2)
VALUES((SELECT ISNULL(MAX(id)+1,0) FROM dbo.Tbl1 WITH(SERIALIZABLE, UPDLOCK)), 42, 47);

SELECT * FROM dbo.Tbl1;
2021-05-10