作为序言,我必须在patients
表中进行大量插入,看起来类似于:
pid | FirstName | LastName
-------------------------------------------
10 | John | Cena
11 | Eric | Bischoff
12 | Vince | Russo
我的插入语句类似于:
INSERT INTO patients (FirstName, LastName)
OUTPUT inserted.pid
VALUES ('Seth', Rollins');
这将返回最新的pid
,但是如何在完全不同的表中的另一个insert语句中使用返回的标识?
INSERT INTO booking (pid, start, end)
VALUES (inserted.pid, 'XX/XX/XXXX', XX/XX/XXXX');
IE:
booking_id | pid | start | end
-----------------------------------------
1 | 10 | 08/01/2016 | NULL
2 | 11 | 07/25/2016 | 07/26/2016
我正在使用这个名字和姓氏信息循环一个大的.csv文件。
答案 0 :(得分:1)
如果您不想使用SCOPE_IDENTITY(),可以使用以下语法:
DECLARE @out TABLE (pid int);
INSERT INTO patients (FirstName, LastName)
OUTPUT inserted.pid INTO @out
VALUES ('Seth', 'Rollins');
INSERT INTO booking (pid, start, end)
VALUES ((SELECT TOP 1 pid FROM @out), 'XX/XX/XXXX', 'XX/XX/XXXX');
答案 1 :(得分:0)
最可转换的方法是:
declare @ID table (ID int)
declare @someInt int
INSERT INTO patients (FirstName, LastName)
OUTPUT inserted.pid into into @ID
VALUES ('Seth', 'Rollins');
SELECT @someInt = ID FROM @ID
INSERT INTO booking (pid, start, end)
VALUES (@someInt , 'XX/XX/XXXX', XX/XX/XXXX');