gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:36:46 25 4
gpt4 key购买 nike

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

test_unique 是 column1 和 column2 放在一起的唯一约束。

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 行。

有没有办法知道即使是单个插入而不管它在查询中的位置?

谢谢

最佳答案

您可以使用返回:

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;

关于sql - 将多个 upsert 语句的结果捕获到 Postgresql 的一个输出中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43240278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com