一尘不染

使用PK反馈循环复制行

sql

鉴于以下内容(表1):

Id    Field1  Field2     ...
--    ------  -------
NULL  1        2
NULL  3        4
...

我想将Field1和Field2的值插入到另一个表(Table2)中。表2具有自动递增整数主键。我想从Table2中检索新的PK,并更新上面的ID列(表1)。

我意识到这不是传统的做法-这不是我需要定期执行的工作,只是一次性完成一些迁移工作。我使用进行了一些尝试INSERT INTO, OUTPUT, INSERTED.Id,但失败了。“回送”到表1中的PK必须与插入的Field1 / Filed2的值相关。


阅读 140

收藏
2021-03-08

共1个答案

一尘不染

您应该只能够插入,然后删除并重新插入。

create table t1
( id int, f1 int, f2 int);

create table t2
( id int primary key IDENTITY , f1 int, f2 int);

insert into t1 (id, f1, f2) values (null, 1, 2);    
insert into t1 (id, f1, f2) values (null, 3, 4);
insert into t1 (id, f1, f2) values (null, 5, 6);
insert into t1 (id, f1, f2) values (null, 5, 6);

insert into t2 (f1, f2) 
select f1, f2 from t1 where id is null;

delete t1 
  from t1 join t2 on (t1.f1 = t2.f1 and t1.f2 = t2.f2);

insert into t1
select id, f1, f2 from t2;

select * from t1;

请参见SQLFiddle上的此示例。

2021-03-08