从事务中的第一个表获取Id

时间:2017-03-22 11:07:52

标签: sql-server transactions

我得到了这两个表格,例如image

我需要进行在此表中输入数据的事务。如何获取在firstTable中输入的Id,并将其设置为第二个表中的外键FirstTableId?

BEGIN TRANSACTION
INSERT INTO FirsTable (Name) VALUES ('example1')

INSERT INTO SecondTable (Name, FirstTableId) VALUES ('example2', ?)

COMMIT TRANSACTION

1 个答案:

答案 0 :(得分:2)

考虑ididentity,请使用@@IDENTITY作为下一个: -

BEGIN TRANSACTION
INSERT INTO FirsTable (Name) VALUES ('example1')

INSERT INTO SecondTable (Name, FirstTableId) VALUES ('example2', @@IDENTITY)

COMMIT TRANSACTION 

了解更多details

<强>更新 -

对于非标识列,请使用表变量通过Output获取ID,如下所示: -

BEGIN TRANSACTION
DECLARE @id int
DECLARE @table table (id int)

INSERT INTO FirsTable (Name) 
OUTPUT inserted.id into @table
VALUES ('example1')
SELECT @id = id from @table

INSERT INTO SecondTable (Name, FirstTableId) VALUES ('example2',  @id)

COMMIT TRANSACTION

更多details