修改 PostgreSQL 中的表约束

use*_*760 10 postgresql constraint

说我有一个约束

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
Run Code Online (Sandbox Code Playgroud)

需要修改,以便邮政编码长度为6.

我是否zipchk先删除约束然后重新创建它?

ALTER TABLE distributors DROP CONSTRAINT zipchk;
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);
Run Code Online (Sandbox Code Playgroud)

或者是否有MODIFY(类似)命令:

ALTER TABLE distributors MODIFY CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);
Run Code Online (Sandbox Code Playgroud)

Erw*_*ter 28

总结一下评论:

@ypercube暗示,你可以做一个单一的命令,这是更便宜,更安全:

ALTER TABLE distributors
  DROP CONSTRAINT zipchk
, ADD  CONSTRAINT zipchk CHECK (length(zipcode) = 6);
Run Code Online (Sandbox Code Playgroud)

ALTER CONSTRAINT在 Postgres 9.4 或更高版本(如您所见)中只能更改 FK 约束的“可延迟性”。所以不是你要找的。除此之外,没有MODIFY用于约束的“ (like)命令”(MODIFY我假设是指MySQL )。

手册中的ALTER TABLE详细信息,例如提到的@a_horse。