-
Foreign Key non validée
Bonjour,
Il m'arrive un problème bête : j'ai désactivé une contrainte de FOREIGN KEY (une toute bête, NOT DEFERRABLE et avec une DELETE RULE = NO ACTION) sans m'apercevoir qu'il y avait plein de lignes qui ne vérifient pas la contrainte (je suppose que ça correspond au statut NOT VALIDATED de ladite contrainte).
J'aurais donc une question existentielle et une question pratique :
- comment c'est possible d'avoir des lignes invalides alors que la contrainte était activée ?
- comment je fais maintenant pour la réactiver sans corriger les lignes ?
Merci d'avance pour toute piste !
-
"comment c'est possible d'avoir des lignes invalides alors que la contrainte était activée"
Es-tu sur que la contrainte était bien activée lorsque les donnés ont été insérées? Il est possible sous Oracle d'insérer des données puis de créer une contrainte d'intégrité valable UNIQUEMENT pour les nouvelles données insérées.
https://docs.oracle.com/database/121...htm#SQLRF52180 :
"ENABLE VALIDATE specifies that all old and new data also complies with the constraint. An enabled validated constraint guarantees that all data is and will continue to be valid.
ENABLE NOVALIDATE ensures that all new DML operations on the constrained data comply with the constraint. This clause does not ensure that existing data in the table complies with the constraint."
"comment je fais maintenant pour la réactiver sans corriger les lignes ?"
Essaye un
Code:
ALTER TABLE ADD CONSTRAINT ... ENABLE NOVALIDATE;
-
C'est parfait, merci beaucoup !
:lahola:
-
Content d'avoir pu aider :D