sql - 如何让 postgres 忽略带有重复键的插入但继续

标签 sql postgresql clojure sql-insert hugsql

我将内存中集合中的记录数据插入到 postgres 中,并希望数据库忽略数据库中已经存在的任何记录(由于具有相同的主键),但继续我的其余插入操作。

顺便说一句,我正在使用 clojure 和 hugsql,但我猜答案可能与语言无关。

由于我本质上是以这种方式将数据库视为一个集合,所以我可能会参与反模式。

最佳答案

如果您使用的是 Postgres 9.5 或更新版本(我假设您是,因为它是在 2016 年 1 月发布的),您可以使用一个非常有用的 ON CONFLICT 条款:

INSERT INTO mytable (id, col1, col2)
VALUES (123, 'some_value', 'some_other_value')
ON CONFLICT (id) DO NOTHING

关于sql - 如何让 postgres 忽略带有重复键的插入但继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541579/

相关文章:

sql - 使用 string_to_array() 将 Oracle 转换为 PostgreSQL 查询

concurrency - 使用代理同步作业

mysql - 使用左外连接获取数据需要更多时间

mysql - 500万行表中最长前缀匹配的最佳MYSQL查询

ruby-on-rails - 如何在heroku上使用rails设置pgbouncer?

java - 使用提前编译的 JVM 预热

java - 如何使用 clojure 实例化 Path 对象

php mysql 将复选框返回值与字段值进行比较

mysql - 如何使用 MySQL View 或过程模拟 Explode() 函数

mysql - Rails 和查询 - 获取重复记录的自定义查询