我正在寻找的是您在向现有表添加约束(例如,唯一)、根据现有数据验证它,然后删除约束时会观察到的行为。我不希望约束在表上持续存在,我只想表达它,在现有数据上验证它,然后继续(或引发检查失败的异常); Postgresql (9.2) 是否支持直接执行此类操作的方法?
最佳答案
创建约束:
alter table t
add constraint the_pk primary key (user_id);
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "the_pk" for table "t"
ERROR: could not create unique index "the_pk"
DETAIL: Key (user_id)=(1) is duplicated.
如果没有错误则丢弃它:
alter table t
drop constraint the_pk;
如果您不想将其保留一段时间,那么请在事务中执行:
begin;
alter table t
add constraint the_pk primary key (user_id);
一旦满意回滚交易:
rollback;
关于sql - 在 Postgresql 中,是否可以在不将约束添加到实体的情况下表达和检查约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987980/