gpt4 book ai didi

sql-server - SQL Server插入语句使用INSERTED获取新ID和现有ID

转载 作者:行者123 更新时间:2023-12-02 23:47:14 24 4
gpt4 key购买 nike

我正在将记录从一个 SQL Server 数据库插入到另一个数据库中。我需要获取新插入的 id 并更新源表上的字段。我可以使用 INSERTED 选项获取新 ID,没有问题。但是,我似乎无法从源表中获取 ID。目标表没有源 ID 字段。源表是转换表,我不想用转换字段污染目标表。这可能是不可能的,但我想我应该先和你们确认一下。

drop table #Table1
CREATE TABLE #Table1
(
Table1ID INT,
Table2ID INT,
NAME VARCHAR(32)
)

INSERT INTO #Table1
VALUES
(1, NULL, 'Fred')
,(2, NULL, 'Tom')
,(3, NULL, 'Sally')

--ok, im inserting into #Table2
drop table #Table2
CREATE TABLE #Table2
(
[Table2ID] [int] IDENTITY(1,1) NOT NULL,
NAME VARCHAR(32)
)

--THE RUB, I want to insert Table2ID into table3
--along with Table1ID. I cannot seem to reference table1
--Any Ideas?
insert into #Table2(NAME)
OUTPUT INSERTED.Table2ID, T.Table1ID into #Table3
select Name from #Table1 T

最佳答案

你不能用 INSERT 来做到这一点(因为它缺少自己的 FROM 子句),但你可以用 MERGE 来做到这一点:

MERGE INTO #Table2 as t2
USING #Table1 as t1 ON 0=1
WHEN NOT MATCHED BY TARGET THEN
INSERT (NAME) VALUES (t1.NAME)
OUTPUT INSERTED.Table2ID, t1.Table1ID ;

关于sql-server - SQL Server插入语句使用INSERTED获取新ID和现有ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com