|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : mars 2006 Messages : 6 ![]() |
Citation:
Voici le code de mon trigger : Code :
Bon sinon, j'ai un autre problème lié à celui ci finalement. Lorsque mon trigger se déclenche, c'est bien il affiche un message d'erreur, mais ma table est qd même modifié. Comment dire au trigger qu'il ne faut pas qu'afficher mais carrément empêcher de continuer à la requête... Peut être avec raise application error, mais comme vous pouvez le constater, ça veut pas... Merci infiniment pour votre aide... |
|||
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Le premier message d'erreur est assez explicite: le premier argument de raise_application _error est incorrect. Il doit être entre -20000 et -20999:
Citation:
Pour récupérer votre exception, le code appelant doit exécuter: Code :
|
|||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mars 2006 Messages : 6 ![]() |
Merci beaucoup, je vais tester ça.
Sinon est-il possible dans un trigger de faire un DELETE sur la ligne que l'on a en ligne de mire puisqu'elle a déclenché le trigger. Il me semble que j'ai eu une erreur de mutation je.sais.pu.quoi lorsque j'avais essayé ça. dans mon trigger juste après mon IF, j'avais essayé : voire premier msg DELETE FROM reservation r WHERE r.id_res= :old.id_res; et ça ne marchait pas ! Donc savez vous comment supprimer la ligne qui nous embête ds un trigger ? Merci ! |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() |
Si tu veux supprimer une ligne de la table concernée par le déclencheur tu vas tomber dans le problème de la table mutante.
Donc Oracle refuse cette suppression. Tu peux essayer une solution paliative : Il faut créer une table temporaire X , la structure de cette table contient juste les champs qui font l'identifiant de ta table "Reservation" par exemple . dans le déclancheur de la table reservation tu vas inserer la ligne que tu veux effacer dans la table temporaire X . Dans la table X , tu vas mettre un déclancheur sur l'évenement after insert, dans le traitement tu vas mettre un delete sur la table reservation avec une condition sur la clé que tu as stocké dans la table X. voilà |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com