web-dev-qa-db-fra.com

Modifier la contrainte de table dans PostgreSQL

Dis que j'ai une contrainte

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

qui doit être modifié pour que la longueur du code postal soit 6.

Dois-je d'abord supprimer la contrainte zipchk puis la recréer?

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

ou existe-t-il une commande MODIFY (comme):

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

Pour résumer les commentaires:

Comme @ ypercube laissé entendre , vous pouvez le faire dans une seule commande , ce qui est moins cher et plus sûr:

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

ALTER CONSTRAINT dans Postgres 9.4 ou version ultérieure (comme vous l'avez trouvé) ne peut que modifier la "déférabilité" d'une contrainte FK. Donc pas ce que vous cherchez. En dehors de cela, il n'y a pas de "MODIFY (comme) commande" pour les contraintes (faisant référence au MODIFY de MySQL je suppose).

Détails dans le manuel de ALTER TABLE , comme @a_horse l'a mentionné.

19
Erwin Brandstetter