You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中ON CONFLICT语句能否直接使用唯一约束名指定冲突规则

结论

可以直接使用约束名指定冲突判断规则,这是PostgreSQL ON CONFLICT 子句原生支持的语法。

具体用法

你只需要把原语句中的冲突字段声明替换为ON CONSTRAINT 约束名的格式即可,对应你的场景正确写法如下:

INSERT INTO table1(user_id, product, val3)
VALUES(1, 1, 'some_value')
ON CONFLICT ON CONSTRAINT con1
DO UPDATE SET val3 = '';

注意:PostgreSQL 中字符串字面量需要用单引号包裹,双引号仅用于识别表名、字段名这类标识符,原语句中给val3赋值用双引号的写法会执行报错。

补充说明

PostgreSQL的ON CONFLICT子句支持两种冲突匹配规则:

  • 指定冲突列/索引表达式:数据库会自动匹配对应列上的唯一约束/唯一索引
  • 直接指定约束名:精准匹配你创建的对应约束,无需重复写字段组合,适合约束包含多字段、或者你需要明确指定用某一个约束做冲突判断的场景

内容的提问来源于stack exchange,提问作者Rolaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 05:48:04