Ste*_*eve 5 sql-server identity insert
我正在将记录从一个sql server db插入另一个.我需要获取新插入的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
Run Code Online (Sandbox Code Playgroud)
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 ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1434 次 |
| 最近记录: |