|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 3 ![]() |
Bonjour à tous,
Je suis étudiant en informatique (en Bac2) et je viens faire appel à vous dans l'urgence, ayant un projet à présenter à courte échéance (demain). Voici donc mon problème : Je dispose d'une table hp.annees à laquelle j'ai attaché une sequence seq_annees_pk, cette sequence démarre par défaut à 1 et s'incrémente de 1 à la fois. Lorsque je fais un INSERT sur ma table hp.annees, une procédure trigger est appelée (BEFORE INSERT) et fait des vérifications pour savoir si l'année peut être insérée. Le problème est que, même si mon trigger renvoie une exception, ma séquence s'incrémente malgré tout. J'ai pensé à plusieurs solutions : -Existe-t-il une manière d'annuler/empêcher l'auto-incrémentation de ma séquence quand mon trigger renvoie une exception ? -J'ai également tenté de place la ligne de code suivante juste avant ma RAISE EXCEPTION : Citation:
Auriez-vous une piste à me proposer ? Merci de votre attention |
|
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : octobre 2008 Messages : 1 708 ![]() |
Pourquoi ne pas déclencher le nextval de la séquence après les vérifications dans le trigger?
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 3 ![]() |
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : octobre 2008 Messages : 1 708 ![]() |
Supposons qu'il y ait une table avec une colonne associée à une séquence via la clause DEFAULT:
Code :
macolonne INT DEFAULT NEXTVAL('masequence'); A la place à l'endroit qui va bien dans le trigger sur INSERT, faire Code :
NEW.macolonne := NEXTVAL('masequence'); |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2012 Messages : 3 ![]() |
C'est une excellente suggestion qui m'a permis de résoudre le problème.
Merci beaucoup du coup de pouce |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com