Sql server 从事务中的第一个表获取Id
我拿这两张桌子为例 我需要在这个表中输入数据。如何获取输入到firstTable中的Id,并在第二个表中将其设置为外键FirstTableIdSql server 从事务中的第一个表获取Id,sql-server,transactions,Sql Server,Transactions,我拿这两张桌子为例 我需要在这个表中输入数据。如何获取输入到firstTable中的Id,并在第二个表中将其设置为外键FirstTableId BEGIN TRANSACTION INSERT INTO FirsTable (Name) VALUES ('example1') INSERT INTO SecondTable (Name, FirstTableId) VALUES ('example2', ?) COMMIT TRANSACTION 考虑到id是一个identity,使用@@
BEGIN TRANSACTION
INSERT INTO FirsTable (Name) VALUES ('example1')
INSERT INTO SecondTable (Name, FirstTableId) VALUES ('example2', ?)
COMMIT TRANSACTION
考虑到
id
是一个identity
,使用@@identity
作为下一步:-
BEGIN TRANSACTION
INSERT INTO FirsTable (Name) VALUES ('example1')
INSERT INTO SecondTable (Name, FirstTableId) VALUES ('example2', @@IDENTITY)
COMMIT TRANSACTION
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
更多
更新:-
对于非标识列,使用表变量通过使用输出获取id,如下所示:-
BEGIN TRANSACTION
INSERT INTO FirsTable (Name) VALUES ('example1')
INSERT INTO SecondTable (Name, FirstTableId) VALUES ('example2', @@IDENTITY)
COMMIT TRANSACTION
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
更多信息谢谢!如果我在这个事务中得到了另一个(第三个)INSERT,我需要获取firstTable的Id怎么办?没有任何问题,通过这个代码INSERT INTO FirsTable(Name)OUTPUT inserted.Id INTO@table VALUES('example1')选择@Id=Id from@table
您将插入第一个表中的Id保留到@Id
变量中,所以你想用什么就用什么。