PostgreSQL:默认约束名称
在PostgreSQL中创建表时,如果未提供默认约束名称,将指定默认约束名称:PostgreSQL:默认约束名称,postgresql,naming-conventions,constraints,Postgresql,Naming Conventions,Constraints,在PostgreSQL中创建表时,如果未提供默认约束名称,将指定默认约束名称: CREATE TABLE example ( a integer, b integer, UNIQUE (a, b) ); 但使用altertable添加约束时,名称似乎是必需的: ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b); 这导致我所从事的项目的命名不一致,并引发以下问题: 有
CREATE TABLE example (
a integer,
b integer,
UNIQUE (a, b)
);
但使用altertable
添加约束时,名称似乎是必需的:
ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b);
这导致我所从事的项目的命名不一致,并引发以下问题:
PostgreSQL中索引的标准名称为:
{tablename}{columnname}{suffix}
其中,后缀为以下之一:
用于主键约束pkey
用于唯一约束键
用于排除约束excl
用于任何其他类型的索引idx
用于外键fkey
检查检查约束
适用于所有序列seq
正是出于这个原因,我制定了一条规则来避免使用默认名称-最终会出现这样的情况:在每个部署中,约束都有不同的名称。非常有用,谢谢!值得补充的是,外键使用后缀
fkey
,多列外键约束似乎只包括第一列名称。@IanMackinnon,这应该是最好的答案!这个信息是黄金!您可以通过运行例如CREATE TABLE mytable(mycolumn numeric UNIQUE)来确认这些
这正是我在谷歌搜索“postgresql索引命名约定”时寻找的答案@someone啊对不起,我想我的意思是E.4.3.3实用程序命令的结束。这是E.4.3.4数据类型之前的最后一个项目:“为外键选择默认约束名称时使用所有键列的名称(Peter Eisentraut)”啊!我错误地包括了约束
像更改表示例添加约束唯一性(a,b)代码>和获取错误。非常感谢。