我在PostgreSQL中创建了一个像这样的表:
CREATE TABLE Table1 (
Id varchar(100) PRIMARY KEY CHECK (Id ~ '^[a-z0-9]{3,15}$'),
...
);
这将自动创建一个名为table1_id_check
的约束。
现在我想将检查约束更改为
(Id ~ '^[a-z0-9]{3,}$')
如何在PostgreSQL中作为单个语句执行此操作而不删除约束并重新创建它?
答案 0 :(得分:1)
在事务中使用多个语句适用于支持在事务中使用此DDL的所有SQL dbms。
begin transaction;
alter table table1
drop constraint table1_id_check;
alter table table1
add constraint table1_id_check CHECK (Id ~ '^[a-z0-9]{3,}$');
commit;
PostgreSQL允许您在ALTER TABLE语句中使用多个子句。
alter table table1
drop constraint table1_id_check,
add constraint table1_id_check CHECK (Id ~ '^[a-z0-9]{3,}$');