使用select结果进行Postgres upsert操作

10

我正在尝试使用从select语句中获取的值来进行Postgres的upsert操作。示例如下:

INSERT INTO foo (a, b, c)
SELECT a_, b_, c_
-- hairy sql
ON CONFLICT (...condition...) DO UPDATE
SET "c"=???

在冲突时,我想使用我的select语句中的一个值,但我找不到正确的语法来给它取别名。如何在Postgres中实现这个功能?

1个回答

14

使用 excluded 关键字:

INSERT INTO foo (a, b, c)
SELECT a_, b_, c_
-- hairy sql
ON CONFLICT (...condition...) DO UPDATE
  SET c = excluded.c;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接