在PostgreSQL中创建表时,如果未提供默认约束名称,则会指定默认约束名称:

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. 有没有一种简单的方法可以将约束添加到现有表中,如果在表创建过程中添加约束,它会收到一个名称?

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

推荐答案

manual人对此非常清楚("tableconstraint: This form adds a new constraint to a table using the same syntax as CREATE TABLE.")

所以你可以简单地运行:

ALTER TABLE example ADD UNIQUE (a, b);

Postgresql相关问答推荐

如何在PostgreSQL中正确删除数据库

如何在PostgreSQL 16中设置&Q;VARSIZE&Q;和&Q;SET_VARSIZE&Q;

在PostGreSQL中获取最近日期的项目

如何将 SELECT 查询的结果插入表中?

如何在typeorm和嵌套js中将运行时变量设置为postgresql

Postgres - 如何加入两列?

替代在 PostgreSQL 函数中嵌套正则表达式替换?

并行取消嵌套多个数组

PostgreSQL - 改变数字的精度?

如何使用 SpringBoot + JPA 存储 PostgreSQL jsonb?

在查询中的复合外键/主键列上连接表

IntegrityError:postgres 从转储恢复后,所有具有 ForeignKey 的模型/字段的id列中的空值

如何在 PostgreSQL 中创建 guid

如何在数据库表中查找重复条目?

POSTGRESQL 中的 CHARINDEX (SQL SERVER) 相似函数是什么?

在 postgresql 中将 bool 转换为 int

postgresql 查询以显示用户的组

如何从 CSV 为 PostgreSQL 副本生成模式

带有偏移限制的 Select 查询太慢了

如何使用 postgresql 按计数排序?