Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多个upsert语句的结果捕获到Postgresql的一个输出中_Sql_Postgresql_Upsert_Knex.js - Fatal编程技术网

将多个upsert语句的结果捕获到Postgresql的一个输出中

将多个upsert语句的结果捕获到Postgresql的一个输出中,sql,postgresql,upsert,knex.js,Sql,Postgresql,Upsert,Knex.js,我在一次运行中运行多个upsert语句。可以根据数据添加或更新查询。可以知道是否发生了新的插入 test_unique是列1和列2的唯一约束 insert into test(column1,column2) values(1,1) ON CONFLICT ON CONSTRAINT test_unique DO NOTHING; insert into test(column1,column2) values(1,2) ON CONFLICT ON CONSTRAINT test_unique

我在一次运行中运行多个upsert语句。可以根据数据添加或更新查询。可以知道是否发生了新的插入

test_unique是列1和列2的唯一约束

insert into test(column1,column2) values(1,1) ON CONFLICT ON CONSTRAINT test_unique DO NOTHING;
insert into test(column1,column2) values(1,2) ON CONFLICT ON CONSTRAINT test_unique DO NOTHING;
insert into test(column1,column2) values(1,1) ON CONFLICT ON CONSTRAINT test_unique DO NOTHING;
如果我们接受上述问题

  • 第一个查询将插入新行
  • 第二个查询还将插入新行
  • 第三个查询将不起任何作用
以批处理方式运行这些查询时,任何客户端库都将捕获上一个查询的输出,并返回0行

有没有办法知道哪怕是一个insert,而不管它在查询中的位置如何


谢谢

您可以使用
返回

with i1 as (
      insert into test(column1,column2) values(1,1)
          ON CONFLICT ON CONSTRAINT test_unique DO NOTHING
          returning *
     ),
     i2 as (
      insert into test(column1,column2) values(1,2)
          ON CONFLICT ON CONSTRAINT test_unique DO NOTHING
          returning *
     ),
     i3 as (
      insert into test(column1,column2) values(1,1)
          ON CONFLICT ON CONSTRAINT test_unique DO NOTHING
          returning *
    )
select id from i1 union all
select id from i2 union all
select id from i3;

您可以使用
返回

with i1 as (
      insert into test(column1,column2) values(1,1)
          ON CONFLICT ON CONSTRAINT test_unique DO NOTHING
          returning *
     ),
     i2 as (
      insert into test(column1,column2) values(1,2)
          ON CONFLICT ON CONSTRAINT test_unique DO NOTHING
          returning *
     ),
     i3 as (
      insert into test(column1,column2) values(1,1)
          ON CONFLICT ON CONSTRAINT test_unique DO NOTHING
          returning *
    )
select id from i1 union all
select id from i2 union all
select id from i3;