PostgreSQL:默认约束名称

在PostgreSQL中创build表格时,如果没有提供,将会分配默认约束名称:

CREATE TABLE example ( a integer, b integer, UNIQUE (a, b) ); 

但是使用ALTER TABLE添加一个约束似乎是一个名字是必须的:

 ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b); 

这导致了我所处理的项目中的一些命名不一致,并提示以下问题:

  1. 是否有一个简单的方法来添加一个约束到一个现有的表,如果在表创build期间添加它会收到的名字?

  2. 如果不是,应该避免默认名称,以防止不一致?

这个手册非常清楚(“ tableconstraint:这个表单使用与CREATE TABLE相同的语法为表添加了一个新的约束 ”)。

所以你可以简单地运行:

 ALTER TABLE例子ADD UNIQUE(a,b);

PostgreSQL中索引的标准名称是:

{tablename}_{columnname(s)}_{suffix}

其中后缀是以下之一:

  • 主键约束的pkey
  • key是一个唯一的约束
  • excl排除约束
  • idx任何其他种类的索引
  • fkey为外键
  • check Check约束

序列的标准后缀是

  • seq为所有序列

您的UNIQUE约束的certificate:

注意:CREATE TABLE / UNIQUE将为表“example”创build隐式索引“example_a_b_key”