Comment faire pour annuler l'exécution d'un trigger sous Mysql ?

Comment faire pour annuler l'exécution d'un trigger sous Mysql ? - SQL/NoSQL - Programmation

Marsh Posté le 11-04-2007 à 15:43:44    

Bonjour,
 
Je suis sous mysql 5.0.33.
 
J'ai un trigger qui ressemble à ça :
 

Code :
  1. CREATE TRIGGER ADD_CONGE
  2. BEFORE INSERT ON conge
  3. FOR EACH ROW
  4. BEGIN
  5. DECLARE NB INT(11);
  6. SELECT nb_conge FROM personnel WHERE matricule=new.matricule INTO NB;
  7. IF NB>9 THEN
  8.    ANNULER INSERTION;
  9. ELSE
  10.     UPDATE personnel SET nb_conge=nb_conge+1 WHERE matricule=new.matricule;
  11. END IF;
  12. END;
  13. !!


 
Je souhaiterais annuler l'insertion si NB>9 (sous oracle possible ave des exceptions, raise, ou rollback ...).
La seule solution que j'ai trouvée c'est d'y mettre une requête bidon du genre "UPDATE personnel set toto="toto"" qui arrêtera l'exécution di trigger empêchant ainsi l'insertion.
 
Des idéées ?
 
Merci


Message édité par 86bavaria le 11-04-2007 à 15:44:53
Reply

Marsh Posté le 11-04-2007 à 15:43:44   

Reply

Marsh Posté le 11-04-2007 à 15:44:17    

up


Message édité par 86bavaria le 11-04-2007 à 15:44:37
Reply

Marsh Posté le 11-04-2007 à 16:09:56    

select 1/0
 
bah quand tu peux pas faire de raise proprement, t'en fait un salement :spamafote:
 
-- edit : après relecture, c'est ce que tu fais déjà, mais en plus lisible je pense --


Message édité par MagicBuzz le 11-04-2007 à 16:11:16
Reply

Marsh Posté le 11-04-2007 à 16:20:47    

peut pas faire de select dans un trigger : mysql y veut pas  :cry: !
 
Donc pas de solution propre ?


Message édité par 86bavaria le 11-04-2007 à 16:20:56
Reply

Marsh Posté le 11-04-2007 à 16:23:26    

comment c trop d'la merde mysql :ouch:
 
et dire que je croyais que ça s'était amélioré, en fait y'a que l'emballage qui est mieux, ça reste toujours aussi naze dès qu'on gratte un peu :ouch:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed