|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Candidat au titre de Membre du Club
![]() Développeur informatique Inscription : février 2007 Messages : 62 ![]() |
Voila en ce moment je suis en train de tester les tables objet relationnel et pour assurer l'intégrité référentiel j'ai du créer un trigger (before insert) qui vérifie donc quan j'insert une nouvelle ligne si une référence n'est pas déja contenu dans la table ou pointe cette référence.
Voila la table concerné par le trigger : Code :
Code :
Mais a présent le trigger ne m'affiche plus l'erreur. Il ne fait rien, même quand je met la même référence il ajoute la ligne. Voila si vous pouviez me dire comment résoudre mon probleme je vous serais trés reconnaissant^^. ps : mon insert de test Code :
|
||||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
http://sgbd.developpez.com/oracle/ora-04091/
Merci d'indiquer votre version d'Oracle et je vous rappelle qu'il existe un forum sur Oracle dans lequel votre message aurait sa place...
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Développeur informatique Inscription : février 2007 Messages : 62 ![]() |
Bonjour, oui j'ai chercher le bon forum mais je n'avais pas vu qu'il y en avait un pour oracle.
Pour ce qui est du lien que tu propose je suis déja aller voir la bas c'est justement avec ce tuto que j'ai adopté la technique pour ignorer l'erreur. Malheuresement comme je l'ai dis apres cette modif le trigger ne fonctionne plus correctement.. Voila si mon post ne correspond pas a cette parti du forum vous pouvez le déplacer dans la partie approprié. Edit : Ah j'oubliais j'ai la version 10g de Oracle (Express Edition) |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Tu seras toujours en table_mutante : Tu ne peux pas lire la table sur laquelle le trigger fait référence.
Un moyen de contournement : Créer une fonction autonome (PRAGMA AUTONOMOUS_TRANSACTION) qui va faire ton count(*) Mais dans ce cas si tu insères 2 fois la même ligne sans commiter, la procédure ne les verra pas. Solution simple : créer un index unique sur refpat. Oracle le gère tout seul
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Développeur informatique Inscription : février 2007 Messages : 62 ![]() |
ah ok merci j'ai utiliser un index et maintenant ca fonctionne. J'ai voulus faire un trigger parce que notre professeur dans son poilycopié disait qu'on était obliger de créer un trigger, mais j'imagine que c'est uniquement valable pour les tables objet.
|
|
|
00
|
|
|
#6 |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
Un peu petit conseil : ne fais jamais le travail d'Oracle parce qu'il le fait mieux que nous, et si on essaie de le faire on aura que des problèmes. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com