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);
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é.