当前位置:  开发笔记 > 编程语言 > 正文

在SQL Server中,执行Insert时是否可以获取记录的"id"?

如何解决《在SQLServer中,执行Insert时是否可以获取记录的"id"?》经验,为你挑选了2个好方法。

在SQL Server 2005中,我在表中的"id"字段中将"Is Identity"属性设置为"Yes".因此,当在该表上执行Insert时,"id"将自动设置为下一个递增整数.执行Insert是否有一种简单的方法来获取"id"的设置,而不必在Insert之后立即执行Select语句?

重复:
获取插入行的标识的最佳方法?

Josh Hinman.. 32

至少在.Net中,您可以一次性向服务器发送多个查询.我在我的应用程序中这样做:

command.CommandText = "INSERT INTO [Employee] (Name) VALUES (@Name); SELECT SCOPE_IDENTITY()";
int id = (int)command.ExecuteScalar();

奇迹般有效.



1> Josh Hinman..:

至少在.Net中,您可以一次性向服务器发送多个查询.我在我的应用程序中这样做:

command.CommandText = "INSERT INTO [Employee] (Name) VALUES (@Name); SELECT SCOPE_IDENTITY()";
int id = (int)command.ExecuteScalar();

奇迹般有效.


当仅处理单行更新时,此解决方案很好.有关良好的批量更新解决方案,请参阅kamajo的答案.

2> 小智..:

如果要插入多行,则在语句中使用OUTPUTINSERTED.columnname子句insert是将所有id都放入临时表的简单方法.

DECLARE @MyTableVar table( ID int,  
                               Name varchar(50),  
                               ModifiedDate datetime);  
INSERT MyTable  
        OUTPUT INSERTED.ID, INSERTED.Name, INSERTED.ModifiedDate INTO @MyTableVar  
SELECT someName, GetDate() from SomeTable  

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有