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 :
En vain car manifestement je ne peux rien mettre d'autre qu'un INTEGER à la suite du RESTART WITH (nb: même en mettant une variable INTEGER cela ne fonctionne pas)ALTER SEQUENCE hp.seq_annees_pk RESTART WITH ((SELECT count(*) from hp.annees)+1);
Auriez-vous une piste à me proposer ?
Merci de votre attention
Partager