2009-05-09 6 views
1

J'ai deux tables t1 et t2. J'ai créé deux triggers tr1 après insertion sur t1 et tr2 après mise à jour sur t2. dans les deux tableaux, je met à jour la table t2. donc, il lance une erreur en disant que la table t2 est déjà mise à jour dans un autre trigger, donc je ne peux pas la mettre à jour à nouveau.MySQL après insertion et après mise à jour déclencheur

S'il vous plaît laissez-moi savoir si quelqu'un a fait face à ce type de problème et l'a réparé.

Merci d'avance! MySQL DBA.

Répondre

-6

J'ai corrigé ce problème, il y avait un problème car j'essayais de mettre à jour et d'insérer sur la même table tb1 à partir de deux déclencheurs mais Mysql ne permettait pas la même table à modifier je suppose.

Remerciements

22

Si vous souhaitez modifier les données qui est mis à jour ou insérer, vous devez utiliser un BEFORE UPDATE et/ou trigger BEFORE INSERT, puis utiliser alias NEW (il fait référence à la ligne, qui est inséré ou la ligne telle qu'elle apparaîtra après la mise à jour est appliquée) - vous pouvez réellement modifier les champs qui sont insérés. L'ancien alias référence la ligne avant que la mise à jour soit appliquée ou la ligne avant qu'elle ne soit supprimée (dans les déclencheurs qui se déclenchent lors de la suppression).

donc probablement TR2 de déclenchement vous devez quelque chose le long des lignes de:

DELIMITER $$ 
    CREATE TRIGGER tr2 BEFORE UPDATE ON t2 
    FOR EACH ROW BEGIN 
     SET NEW.field1 = some_value_you_want_to_set_it_to; 
    END; 
$$ 
DELIMITER ; 

Parce que dans un déclencheur, vous ne pouvez pas réellement modifier une table, qui est en cours déjà mis à jour, thats droit.

Questions connexes