68 votes

Comment modifier une contrainte de vérification existante?

Existe-t-il un moyen 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
 

117voto

Adam Musch Points 8021

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 n'imposera pas une analyse complète de la table pour vérifier que toutes les lignes sont conformes.

2voto

Oleg Danu Points 1490

NON, vous ne pouvez pas le faire autrement.

0voto

jonearles Points 11924

Non. Si une telle fonctionnalité existait, elle serait listée dans cette illustration de 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.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X