【发布时间】:2022-10-14 02:57:40
【问题描述】:
我想更新我的数据库中的“名称”列,它有超过 300000 条记录。 name 字段有一个唯一的约束
批量更新时,我想跳过违反约束的记录
update "profiles" set name = left(name, -1)
where ---------
ON CONFLICT ON CONSTRAINT profiles_name_key
DO NOTHING
上面的查询在“ON”上抛出错误
编辑
不必使用 ON CONFLICT。任何可以更新不与约束冲突的记录的查询都可以工作
【问题讨论】:
-
没有
UPDATE ... ON CONFLICT。如果你想做一个“upsert”,你需要INSERT ... ON CONFLICT。在此处查看UPDATE语法:postgresql.org/docs/current/sql-update.html -
或者您可能需要
MERGE,这是 PostgreSQL v15 中的新功能。 -
我不需要更新。如果没有冲突,我只想更新。还有其他方法可以实现吗?
标签: sql postgresql