如何用postgresql模拟“插入忽略”和“重复密钥更新时”(sql合并)?

某些SQL Server具有一项功能,如果INSERT违反主键/唯一键约束,则会跳过该功能。例如,MySQL有INSERT IGNORE

使用PostgreSQL模拟重复密钥更新时插入忽略和的最佳方法是什么

在PostgreSQL 9.5中,这现在是本机功能(就像MySQL已经有好几年了):

插入。。。冲突时不做任何事/更新(“升级”)

9.5为“升级”操作提供支持。
INSERT被扩展为接受一个ON CONFLICT DO UPDATE/IGNORE子句。本条款规定了在可能发生重复违规的情况下采取的替代措施

新语法的进一步示例:

插入用户登录(用户名、登录名)
值('Naomi',1),('James',1)
关于冲突(用户名)
DO UPDATE SET logins=用户\登录名.logins+排除名.logins;

发表评论