sql - 在 Postgresql 中,是否可以在不将约束添加到实体的情况下表达和检查约束?

标签 sql postgresql constraints unique-constraint

我正在寻找的是您在向现有表添加约束(例如,唯一)、根据现有数据验证它,然后删除约束时会观察到的行为。我不希望约束在表上持续存在,我只想表达它,在现有数据上验证它,然后继续(或引发检查失败的异常); 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/

相关文章:

sql - ODCIAggregateMerge 没有 parallel_enabled

java - 使用jsp将值插入到oracle表中

sql - 如何逐列选择用户的最大日期?

ios - 通过自动布局根据 UILabel 的内容自动调整 UIView 的大小

ios - Xcode Swift 以编程方式将 UITextfield X 位置设置为中心

sql - 创建两个外键相互引用的表

sql - 使用 VBA 将新记录插入 Access 2007 数据库

javascript - 如何在 JavaScript 中使用 C# SQLDataReader 对象

postgresql - 大型客户端连接上的 Pgbouncer

PostgreSQL : Transaction and foreign key problem