在
MySQL中,我们可以在任何约束违规时执行以下操作
INSERT INTO table {setters} ON DUPLICATE KEY UPDATE {setters}
在Postgres有没有这样做呢?
INSERT INTO table {setters} ON CONFLICT(*) DO UPDATE {setters}
注意:* =任何可能的密钥
为什么这是一个重要的特征?
>我想在多个表中使这个代码通用.因此,我无法根据当前的Postgres 9.5语法指定密钥(有人可能会争辩说,我可以将密钥存储在所有表上并动态更改密钥.首先它不优雅且存在以下问题)
>当应用程序处于活动状态时,可以在运行时添加一些新的唯一约束.因此,您无法在编译时在代码中指定此内容
>另一种选择是:在您的应用程序中,您首先尝试插入,当存在重复键错误时,您会抓住它并尝试进行更新.这真的很糟糕,因为这是
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。