【发布时间】:2018-12-11 10:45:05
【问题描述】:
我有很多行数据要插入到表中。表中已经有数据。当我像这样进行批量插入时,
INSERT INTO permission(username, permission) values(('john','ticket_view'), ('john','ticket_modify'), ('john','ticket_approve'));
但是我的表已经有一行 john, ticket_view 在这种情况下,我上面的插入查询以错误 duplicate key value violates unique constraint 结束。
如何在 postgresql 9.3 中忽略这个重复的问题?我只想插入所有行。如果存在类似的行,我想忽略它。我怎样才能做到这一点?欢迎您的帮助。
【问题讨论】:
-
Postgres 9.3 更长 supported 如果您升级到最新版本(例如 11),您可以轻松使用 9.5 中引入的
on conflict功能 -
@a_horse_with_no_name,如果我将我的 postgres 升级到最新版本,我应该如何为批量插入编写
ON CONFLICT语法,正如我在问题中所说的那样?你能给我一个示例语法吗? -
请阅读重复的问题。他们都回答了您的问题(包括针对您过时版本的解决方案)
-
作为重复提到的问题并不是这个问题的真正重复。 OP 想要插入行并忽略,而不是更新,并且对插入忽略/更新的任何 Postgres 语法不特别感兴趣,他只想获取行。这实际上与这个问题更相似:stackoverflow.com/questions/47541579/… - 请参阅我的答案,了解在 Postgres 9.3 中执行此操作的简单方法
标签: postgresql postgresql-9.3 upsert on-duplicate-key