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);
这导致了我所处理的项目中的一些命名不一致,并提示以下问题:
-
是否有一个简单的方法来添加一个约束到一个现有的表,如果在表创build期间添加它会收到的名字?
-
如果不是,应该避免默认名称,以防止不一致?
这个手册非常清楚(“ 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”