微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将auto_increment键插入SQL Server表

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

是否有本机sql函数来评估最后一个密钥并将其递增,或者我必须分两步执行此操作:

key = select max(primary.key) + 1

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

解决方法

从整个评论来看,您在表上的主键不是标识列.

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

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

如果采用两步法,则需要确保同时运行的插入不会最终使用相同的新值.最简单的方法是将select和insert插入一个值并使用serializable表提示

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;

原文地址:https://www.jb51.cc/mssql/83681.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐