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
相关产品推荐
相关产品推荐

