Angenommen, ich habe eine Einschränkung
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
das muss geändert werden, damit die Postleitzahllänge ist 6
.
Muss ich die Einschränkung zipchk
zuerst löschen und dann neu erstellen?
ALTER TABLE distributors DROP CONSTRAINT zipchk;
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);
oder gibt es einen MODIFY
(ähnlichen) Befehl:
ALTER TABLE distributors MODIFY CONSTRAINT zipchk CHECK (char_length(zipcode) = 6);
postgresql
constraint
user4150760
quelle
quelle
modify
Einschränkung (die im Handbuch klar dokumentiert ist ). Sie müssen es löschen und neu erstellen.ALTER CONSTRAINT
in 9.4, die jedoch nur für Fremdschlüsseleinschränkungen funktioniert. postgresql.org/docs/current/static/sql-altertable.htmlAntworten:
Um die Kommentare zusammenzufassen:
Wie @ypercube angedeutet hat , können Sie dies in einem einzigen Befehl tun , was billiger und sicherer ist:
ALTER CONSTRAINT
In Postgres 9.4 oder höher (wie Sie festgestellt haben) kann nur die "Aufschiebbarkeit" einer FK-Einschränkung geändert werden. Also nicht das, wonach Sie suchen. Abgesehen davon gibt es keinen "MODIFY
(like) -Befehl" für Einschränkungen (unter Bezugnahme auf MySQLs,MODIFY
nehme ich an).Details im Handbuch für
ALTER TABLE
, wie @a_horse erwähnt.quelle