2017-09-26 1 views
0

je le déclencheur suivant qui fonctionne quand une ligne est mise à jour sur le conduit tableau:MySQL Trigger ne fonctionne que l'un IF de requête

BEGIN 
    IF NEW.status_id <=> OLD.status_id THEN 
     BEGIN 
      insert into lead_status 
       (lead_id, status_ID) 
      values (OLD.id, NEW.status_id); 
     END; 
    END IF; 

    IF NEW.user_id <=> OLD.user_id THEN 
     BEGIN 
      insert into lead_owner 
       (lead_id, staff_ID) 
      values (OLD.id, NEW.user_id); 
     END; 
    END IF; 
END 

Cependant, il semble que le seul qui fonctionne est la FI en ce qui concerne la user_id . Si je fais une modification avec le status_id, le déclencheur ne semble pas fonctionner. Est-ce que je fais quelque chose de mal ici pour ne pas courir? Je ne reçois aucune erreur de syntaxe lorsque je sauvegarde le déclencheur.

Aide grandement appréciée.

Répondre

0

J'ai simulé le même déclencheur que le vôtre et fonctionne comme prévu. Voici le code de déclenchement

CREATE TRIGGER testTrigger 
AFTER UPDATE ON order_data 
FOR EACH ROW 
BEGIN 
    IF NEW.status_id <> OLD.status_id THEN 
     BEGIN 
      insert into lead_status 
       (lead_id, status_ID) 
      values (OLD.id, NEW.status_id); 
     END; 
    END IF; 

    IF NEW.user_id <> OLD.user_id THEN 
     BEGIN 
      insert into lead_owner 
       (lead_id, staff_ID) 
      values (OLD.id, NEW.user_id); 
     END; 
    END IF; 
END; 

Supposons que le tableau principal appel order_data, j'ai changer le status_id de « IN_PROGRESS » à « IN » id « 01 ». C'est le résultat de la table order_data.
enter image description here

Ceci est le résultat de la table lead_status.
enter image description here
Veuillez réessayer en supprimant votre déclencheur actuel et créer en utilisant le code ci-dessus. HTH.

+1

La différence étant que l'OP a codé un zéro de sécurité égal lorsqu'un non égal est requis? –

+0

@ P.Salmon c'était ça, le changer pour <> le fait fonctionner. –