Ben*_*ack 4 sql t-sql sql-server stored-procedures
我要将数据插入到表中,如下所示:
Insert Into MyTable (Field1, Field2)
Values ('test', 5)
Run Code Online (Sandbox Code Playgroud)
发生插入时,新行将在ID列中具有标识值.如果@ID在我的T-SQL代码中调用了一个变量,如何填充@IDT-SQL插入的结果?
Declare @ID int
Insert into MyTable (Field1, Field2)
Values ('test', 5)
--//How do I populate @ID with the value of ID of the record that was just inserted?
Run Code Online (Sandbox Code Playgroud)
OMG*_*ies 18
有两种方法 - 第一种方法是使用SCOPE_IDENTITY:
DECLARE @ID INT
INSERT INTO MyTable (Field1, Field2)
VALUES ('test', 5)
SELECT @ID = SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
不要使用@@ IDENTITY - 它包含的值是最后更新的IDENTITY列而不考虑范围.意思是,这是不可靠的,它保存了值的 INSERT,但SCOPE_IDENTITY一样.
另一种方法是使用OUTPUT子句(SQL Server 2005+).