Est-il possible de modifier une contrainte de vérification existante sur une table autre que de la supprimer et de la recréer?
create table t ( n number);
ora10g> Tabelle wurde erstellt.
ora10g> alter table t add constraint ck check(n>0);
Tabelle wurde geõndert.
ora10g> alter table t modify constraint ck check(n<0);
alter table t modify constraint ck check(n<0)
*
FEHLER in Zeile 1:
ORA-00933: SQL-Befehl wurde nicht korrekt beendet
Vous devez le supprimer et le recréer, mais vous n'avez pas à supporter le coût de la revalidation des données si vous ne le souhaitez pas.
alter table t drop constraint ck ;
alter table t add constraint ck check (n < 0) enable novalidate;
La clause enable novalidate
Forcera les insertions ou les mises à jour à appliquer la contrainte, mais ne forcera pas une analyse complète de la table par rapport à la table afin de vérifier la conformité de toutes les lignes.
Créez d'abord une nouvelle contrainte, puis supprimez l'ancienne.
Ainsi, vous vous assurez que:
NON, vous ne pouvez pas le faire autrement.
Non. Si une telle fonctionnalité existait, elle serait listée dans ceci illustration de la syntaxe . (Bien qu'il soit possible qu'il existe une fonctionnalité SQL non documentée, ou peut-être un package dont je ne suis pas au courant.)