Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何获取插入的行id并使用此id更新下一行_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 如何获取插入的行id并使用此id更新下一行

Sql server 如何获取插入的行id并使用此id更新下一行,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我使用两个查询insert和update。 所以我需要在进行插入时从插入的行获取输出id,并使用该id更新另一行 begin TRANSACTION; insert into CustomerTrans (Username) values ('a') ; update CustomerTrans set Username='b' where TrnDocumentID=output (inserted.TrnDocumentID) commit; 但是我得到的错误输出未被识别输出只能在更新或

我使用两个查询insert和update。 所以我需要在进行插入时从插入的行获取输出id,并使用该id更新另一行

begin TRANSACTION;
insert into CustomerTrans (Username) values ('a') ; 
update CustomerTrans set Username='b' where TrnDocumentID=output (inserted.TrnDocumentID)
commit;

但是我得到的错误输出未被识别

输出
只能在
更新
插入
语句中在
SELECT
FROM
子句之间引用,它不是一个对象,而是一个子句(即,
OUTPUT inserted.*
,注意,
OUTPUT
是子句,
inserted
是对象)。您可以在此处一次插入多行,还是只插入一行?为什么需要这样做?我猜您可能会在此处插入一行,因为您的代码示例效率低下且逻辑上毫无意义。我发现我可以使用SCOPE_IDENTITY()。但问题是,如果有多个客户端同时运行同一查询,我会有问题吗?不会,不会有问题。除了此ALOW search output子句之外,您可以使用Scope_Identity()。如果要插入多条记录,这将很有帮助。