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

PostgreSQL中两种添加唯一约束SQL语句的区别是什么?

两种PostgreSQL添加唯一约束语句的区别

这两条语句的核心差异在于约束名称的控制权:

  • 语句 ALTER TABLE public.company ADD UNIQUE ("name"); 会让PostgreSQL自动生成唯一约束的名称。PostgreSQL的默认命名规则通常是 [表名]_[列名]_key,所以这条语句生成的约束名刚好就是 company_name_key,这也是你测试结果一致的原因。如果后续添加同类型的约束,自动命名会在末尾追加数字(比如company_name_key1),避免重复。
  • 语句 ALTER TABLE public.company ADD CONSTRAINT company_name_key UNIQUE ("name"); 是手动指定约束名称,完全由你控制约束的标识。这种方式的好处是约束名清晰固定,后续维护(比如删除约束:ALTER TABLE public.company DROP CONSTRAINT company_name_key;)时不需要先查询系统表确认约束名,更高效。

另外需要注意:如果表中已经存在同名约束,手动指定名称的语句会直接报错,而自动命名的语句会生成新的带后缀的约束名(只要约束的列组合不重复)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:25:54