我试图在插入语句后得到一个键值。 例子: 我有一个表的属性名称和id。Id是一个生成的值。
INSERT INTO table (name) VALUES('bob');
现在我想在同一步骤中取回id。这是怎么做到的?
我们使用的是Microsoft SQL Server 2008。
我试图在插入语句后得到一个键值。 例子: 我有一个表的属性名称和id。Id是一个生成的值。
INSERT INTO table (name) VALUES('bob');
现在我想在同一步骤中取回id。这是怎么做到的?
我们使用的是Microsoft SQL Server 2008。
当前回答
建议使用SCOPE_IDENTITY()来获取新的ID值,而不是使用“OUTPUT Inserted”。ID”
如果插入语句抛出异常,我将直接抛出它。而是“输出插入”。ID”将返回0,这可能与预期不同。
其他回答
您可以将选择语句附加到插入语句。 整数myInt = 插入到表1 (FName)值('Fred');选择Scope_Identity (); 这将在执行标量时返回一个标识的值。
这是我如何使用输出插入,当插入到一个表,使用ID作为标识列在SQL Server:
'myConn is the ADO connection, RS a recordset and ID an integer
Set RS=myConn.Execute("INSERT INTO M2_VOTELIST(PRODUCER_ID,TITLE,TIMEU) OUTPUT INSERTED.ID VALUES ('Gator','Test',GETDATE())")
ID=RS(0)
建议使用SCOPE_IDENTITY()来获取新的ID值,而不是使用“OUTPUT Inserted”。ID”
如果插入语句抛出异常,我将直接抛出它。而是“输出插入”。ID”将返回0,这可能与预期不同。
不需要单独的SELECT…
INSERT INTO table (name)
OUTPUT Inserted.ID
VALUES('bob');
这也适用于非identity列(比如guid)
你可以使用scope_identity()选择刚刚插入变量的行ID然后从表中选择你想要的任何列其中ID =你从scope_identity()中得到的标识
请在这里查看MSDN信息http://msdn.microsoft.com/en-us/library/ms190315.aspx