阿里云开发者社区有《PostgreSQL upsert 功能 insert on conflict do 的用法》说明,这里不再赘述。
1.问题描述
项目数据库要从 MySQL 切换到 Greenplum 问题最多的就是 SQL 语法不同,MySQL有on duplicate key update
实现冲突更新,Greenplum却没有。
PostgreSQL 9.5 引入了 UPSET 功能,其语法insert on conflict do
非常强大,支持合并写入(当违反某唯一约束时,冲突则更新,不冲突则写入),同时支持流式计算。
当前使用的 Greenplum 数据库版本为6.13.0
其 PostgreSQL 版本为 9.4.24
无法使用 UPSERT 语法:
# select version();
PostgreSQL