PostgreSQL v9.5 + UPSERT

时间:2016-02-25 16:21:36

标签: sql postgresql upsert postgresql-9.5

看起来PostgreSQL v9.5得到了对INSERT的支持......在冲突中没有/更新http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=168d5805e4c08bed7b95d351bf097cff7c07dd65

我想做这样的事情

UPSERT INTO "myScheme"."myTable" (id, a, b, c) VALUES ($1, $2, $3, $5) WHERE id = $4'

如何实现这个结果,考虑到我正在使用PostgreSQL v9.5 +

1 个答案:

答案 0 :(得分:2)

可能是这样的:

INSERT INTO myScheme.myTable(id, a, b, c) VALUES ($1, $2, $3, $4)
ON CONFLICT (id) DO
UPDATE SET a=$2, b=$3, c=$4;

如果没有id=$1的记录,那么它会插入。否则它将更新现有记录。