使用返回值更新列

时间:2017-02-06 18:36:58

标签: sql postgresql

我想将表中的列拆分为另一个表,并使用外键将原始表中的行指向新表。

如何将列数据复制到另一个表并使用从插入到新表中的返回标识更新每一行?

到目前为止我所拥有的:

insert into tbl_2(col_6,col_7) select col_2, col_3 from tbl_1 returning col_5 

我正在使用postgres作为我的数据库。

2 个答案:

答案 0 :(得分:0)

您可以在CTE中执行此操作。如果我理解正确:

with i as (
      insert into tbl_2(col_6,col_7)
          select col_2, col_3
          from tbl_1
      returning tbl_2_id
     )
update tbl_1
    set tbl_2_id = i.tbl_2_id
    from i
    where tbl_1.col_6 = i.col_6 and tbl_1.col_7 = i.col_7;

答案 1 :(得分:0)

最后,我刚刚在新表中添加了一个临时列,并添加了第一个表中的主键,并执行了第二个更新语句,将每个外键添加回第一个表。