从PostgreSQL删除未命名的约束

yig*_*gal 1 postgresql unique-constraint

在PostgreSQL中,我具有以下表定义

create table file(
    file_id int generated by default as identity primary key,
    file_name text UNIQUE not null
);
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何删除对的唯一约束file_name

a_h*_*ame 5

Postgres使用的默认命名策略就是tablename_columnname_key这样的约束,因此您的情况是file_file_name_key

所以你可以使用

alter table file drop constraint file_file_name_key;
Run Code Online (Sandbox Code Playgroud)

如果您不想依赖默认的命名策略,则可以使用以下查询来检索名称:

select constraint_name
from information_schema.key_column_usage
where table_name = 'file'
  and table_schema = 'public'
  and column_name = 'file_name';
Run Code Online (Sandbox Code Playgroud)