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

上一篇: Return value after INSERT

下一篇: Error INSERT INTO MySQL Table