INSERT后的返回值
我想在INSERT语句后得到一个键值。 例如:我有一个带有属性名称和ID的表格。 id是一个生成的值。
INSERT INTO table (name) VALUES('bob');
现在我想让id回到同一步骤。 这是如何完成的?
我们正在使用Microsoft SQL Server 2008。
不需要单独的SELECT ...
INSERT INTO table (name)
OUTPUT Inserted.ID
VALUES('bob');
这也适用于非IDENTITY列(如GUID)
使用SCOPE_IDENTITY()
获取新的ID值
INSERT INTO table (name) VALUES('bob');
SELECT SCOPE_IDENTITY()
http://msdn.microsoft.com/en-us/library/ms190315.aspx
INSERT INTO files (title) VALUES ('whatever');
SELECT * FROM files WHERE id = SCOPE_IDENTITY();
是最安全的赌注,因为在带有触发器的表上,OUTPUT子句冲突存在已知问题。 即使您的表格当前没有触发器,也会使其变得相当不可靠 - 有人在该行中添加一个会破坏您的应用程序。 时间炸弹的行为。
有关更深入的解释,请参阅msdn文章
http://blogs.msdn.com/b/sqlprogrammability/archive/2008/07/11/update-with-output-clause-triggers-and-sqlmoreresults.aspx
链接地址: http://www.djcxy.com/p/94515.html