postgresql – Postgres UPSERT对任何约束
发布时间:2020-12-13 16:08:10 所属栏目:百科 来源:网络整理
导读:在 MySQL中,我们可以在任何约束违规时执行以下操作 INSERT INTO table {setters} ON DUPLICATE KEY UPDATE {setters} 在Postgres有没有这样做呢? INSERT INTO table {setters} ON CONFLICT(*) DO UPDATE {setters} 注意:* =任何可能的密钥 为什么这是一个
在
MySQL中,我们可以在任何约束违规时执行以下操作
INSERT INTO table {setters} ON DUPLICATE KEY UPDATE {setters} 在Postgres有没有这样做呢? INSERT INTO table {setters} ON CONFLICT(*) DO UPDATE {setters} 注意:* =任何可能的密钥 为什么这是一个重要的特征? >我想在多个表中使这个代码通用.因此,我无法根据当前的Postgres 9.5语法指定密钥(有人可能会争辩说,我可以将密钥存储在所有表上并动态更改密钥.首先它不优雅且存在以下问题) >不是原子操作 解决方法
当然. PostgreSQL
9.5+允许您以这种方式执行此操作:
MySQL查询: INSERT INTO tablename (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; 在PostgreSQL中变成: INSERT INTO tablename (a,c) values (1,10) ON CONFLICT (a) DO UPDATE SET c = tablename.c + 1; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |