将RETURNING的结果保存在单独的变量中

时间:2017-11-22 14:01:15

标签: sql postgresql

问题

说我有以下插入声明:

insert into table_1 (...) values (...), (...), (...);

假设我知道将正确插入这3行(没有违反任何条款),我如何将每个插入行的id字段提取到一个单独的变量中,以便我在其余部分中使用它.sql脚本?

我尝试了什么

我读过关于returning的内容,可能会转化为:

insert into table_1 (...) values (...), (...), (...) returning id;

我还阅读了with(公用表表达式),它可以将returning的结果“保存”到表中,以便以后在insert语句中使用;

但似乎我必须将id作为select id from temp_table关联某种选择器以区分每3行。

问题

有没有办法获取每个插入行的id以便以后在另一个insert语句中单独使用它们?

1 个答案:

答案 0 :(得分:1)

您可以使用三个CTE:

with i1 as (
      insert into table_1 (...) values (...)returning id
     ),
     i2 as (
      insert into table_1 (...) values (...) returning id
     ),
     i3 as (
      insert into table_1 (...) values (...) returning id
     )
insert . . .;

这并不是将值放入三个变量中。它确实将它们放在三个独立的CTE中,因此每个CTE都可以单独引用。