sql - PostgreSQL v9.5+ 更新插入

标签 sql postgresql upsert postgresql-9.5

看起来 PostgreSQL v9.5 支持 INSERT ... ON CONFLICT DO NOTHING/UPDATE 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+,如何实现此结果

最佳答案

可能是这样的:

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的记录,那么它将执行插入。否则它将更新现有记录。

关于sql - PostgreSQL v9.5+ 更新插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35632767/

相关文章:

sql - 使用 ON CONFLICT 从 INSERT 返回行而不需要更新

mysql - 理解此 SQL LEFT JOIN(带有 IS NULL)示例

mysql - Hadoop Hive 查询从单独的表中选择和分组

postgresql - 在 postgres 中存储和访问相关对象

postgresql - 如何在 Yii2 中使用新创建的自定义 Postgres 模式类型(ENUM)

python - 使用 SQLAlchemy Postgres 批量更新插入

sql - oracle - 案例陈述和分组依据

PHP+MySQL 打印查询结果

ruby-on-rails - Postgresql 适配器 (pg) : could not connect to server

java - 使用 Hibernate 根据唯一键查找或插入