我正在尝试使用新的clientID在SQL中制作精确的数据副本,但也要将现有数据保留在旧客户端中。我将数据插入到具有自动递增整数主键ID的表中。我需要保留Old记录的ID和新记录,这样我就可以继续使用这个映射,因为我复制了不同的表数据,所以我可以保持关系。
此时我有以下内容:
INSERT INTO [dbo].[Driver]
OUTPUT inserted.ID
inserted.Name
inserted.ClientID
SELECT Name,
1234 AS clientID
FROM dbo.Driver
我想知道是否有办法在输出中选择驱动程序的旧ID,然后我可以使用OUTPUT将所有这些插入到保持表中。因此,在执行dbo.Driver表中的插入后,我需要最终得到以下内容,以便我也可以将这些值插入到临时表中:
NewID
OldID
Name
ClientID
此时我不知道如何从原始记录中提取原始ID。
答案 0 :(得分:0)
INSERT INTO dbo.Driver (oldID, Name, clientID)
SELECT
B.ID,
A.Name,
1234 AS clientID
FROM dbo.Driver A
LEFT JOIN dbo.Driver B ON A.Name = B.Name AND A.clientID = b.clientID
或者只是
INSERT INTO dbo.Driver (oldID, Name, clientID)
SELECT
ID,
Name,
1234 AS clientID
FROM dbo.Drive
答案 1 :(得分:0)
我最终使用MERGE INTO按照以下SO帖子跟踪旧ID: How to use OUTPUT to capture new and old ID?