帮助T-SQL脚本:插入记录,然后在另一个语句中使用该插入的标识?

gho*_*_mv 6 sql t-sql

就像前言一样,我对T-SQL语法知之甚少.

我想创建一个简单的SQL脚本,它将生成3个插入语句.

Insert A
Insert B
Insert C
Run Code Online (Sandbox Code Playgroud)

在插入B语句中插入一个语句的标识或"ID".插入C语句中将需要插入A和B的标识.

伪代码看起来像:

INSERT INTO tableA
VALUES ('blah', 'blah')

INSERT INTO tableB
VALUES (IDENTITY_FROM_A_INSERT, 'foo')

INSERT INTO tableC
VALUES (IDENTITY_FROM_A_INSERT, IDENTITY_FROM_B_INSERT)
Run Code Online (Sandbox Code Playgroud)

我该怎么写这个脚本?

Ode*_*ded 19

SCOPE_IDENTITY()在每次插入后使用以获取插入行的标识(在当前会话中).

我使用了两个变量来捕获这两个身份,然后将它们插入到第三个表中:

DECLARE @Id1 INT
DECLARE @Id2 INT

INSERT INTO tableA VALUES ('blah', 'blah')

SET @Id1 = SELECT SCOPE_IDENTITY()

INSERT INTO tableB VALUES (IDENTITY_FROM_A_INSERT, 'foo')

SET @Id2 = SELECT SCOPE_IDENTITY()

INSERT INTO tableC VALUES (@Id1, @Id2)
Run Code Online (Sandbox Code Playgroud)