[MySql] Trigger structure conditionnelle [Résolu]

Trigger structure conditionnelle [Résolu] [MySql] - SQL/NoSQL - Programmation

Marsh Posté le 28-11-2007 à 16:17:22    

Bonjour,
 
N'ayant pas trouver de solution sur le net je viens vous voir pour répondre à une de mes "petites" problèmatiques.
 
Dans une de mes tables, avant chaque insertion je regarde si le fournisseur a le droit de passer une commande.
 
Lorsqu'il a le droit, la ligne rentre bien dans la base, mais lorsque ce n'est pas le cas, elle ne rentre pas :(
Voici le code :
 

Code :
  1. DELIMITER $$
  2. DROP TRIGGER reporting.insert_tblorders $$
  3. CREATE TRIGGER reporting.insert_tblorders BEFORE INSERT ON TBLORDERS
  4. FOR EACH ROW
  5. BEGIN
  6.   DECLARE txsoc VARCHAR(45);
  7.   DECLARE txfournisseur VARCHAR(45);
  8.   IF NEW.PARENTORDERID IS NOT NULL THEN
  9.     SELECT fb.Taux_Soc,fb.Taux_fournisseurINTO txsoc,txfournisseur FROM socfournisseur fb,fournisseur b,fonds f WHERE b.Id_fournisseur=fb.Id_fournisseur AND NEW.FOURNISSEURID=b.Nom_fournisseurAND f.Id_Fond=fb.Id_Fond AND NEW.ACCOUNTID=f.Nom_Fond;
  10.     IF (txsoc IS NOT NULL AND txfournisseur IS NOT NULL )THEN
  11.       SET NEW.SOC_COM_BASE = txsoc;
  12.       SET NEW.FOURNISSEUR_COM_BASE= txfournisseur;
  13.     ELSE
  14.       SET NEW.SOC_COM_BASE = 'Interdit';
  15.       SET NEW.FOURNISSEUR_COM_BASE= 'Interdit';
  16.     END IF;
  17.   END IF;
  18. END $$
  19. DELIMITER ;


 
Donc pour resumer, mysql me prends bien la première condition : si la requête renvoie quelques chose il va bien me rentrer la ligne, par contre si la requête ne renvoie rien, la ligne ne rentre pas dans la base :(
 
Auriez-vous une idée?
 
Merci d'avance


Message édité par spish le 29-11-2007 à 08:09:49
Reply

Marsh Posté le 28-11-2007 à 16:17:22   

Reply

Marsh Posté le 29-11-2007 à 08:09:32    

Re,
 
Après une nuit à bidouiller j'ai trouvé :)
 
pour ceux que cela interresse, voici la solution :
 
Il faut utiliser les handler :
 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET txsoc := 'Inconnu',SET.........;
 

Reply

Sujets relatifs:

Leave a Replay

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