Bonjour,
Je dois supprimer un grand nombre de données sur une table dont la clé primaire est ultilisée dans de nombreuse autre tables en tant que clé étrangère.
Pour des raisons de performances afin de gagner du temps je suis obligé de désactiver les contraintes pour faire mon delete. Mais le problème c'est que ensuite je dois de nouveau insérer des données (il n'y a pas de commit entre les deux) puis faire un commit avant de pouvoir reactiver des contraintes.
Ce scénario n'est pas génant si je suis sur des données que je supprime et que j'insère. Mais si je supprime ou insère une mauvaise donnée, je ne peux plus reactiver les contraintes et je ne peux pas me permettre cela.
J'ai essayé de réactiver les contraintes avant le commit mais j'ai une erreur Oracle "NOWAIT specified".
Afin d'éviter ce scénario (ne pas pouvoir reactiver les contraintes) que puis-je faire?
1. coder moi meme un algo qui vérifie que toutes les données sont bonnes avant de faire le commit.
2. Existe-t-il une fonction Oracle/SQL qui vérifie l'intégrité des données?
3. autre solutions?
Merci d'avance.
PS je travaille sur Oracle 10g sur un serveur linux.
Partager