web-dev-qa-db-ja.com

PostgreSQLのテーブル制約を変更する

制約があると言います

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);

郵便番号の長さが6になるように変更する必要があります。

最初に制約zipchkを削除してから再作成しますか?

ALTER TABLE distributors DROP CONSTRAINT zipchk;
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);

またはMODIFY(のような)コマンドがあります:

ALTER TABLE distributors MODIFY CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);
8
user4150760

コメントを要約するには:

@ ypercube hinted と同様に、singleコマンドで実行できます。

ALTER TABLE distributors
  DROP CONSTRAINT zipchk
, ADD  CONSTRAINT zipchk CHECK (length(zipcode) = 6);

Postgres 9.4以降のALTER CONSTRAINT(ご存じのように)では、FK制約の「延期性」のみを変更できます。だからあなたが探しているものではありません。それ以外には、制約のための「MODIFY(like)コマンド」はありません(MySQLのMODIFYを参照してください)。

詳細は ALTER TABLE のマニュアルで、@ a_horseと同じです。

19