2010-11-20 3 views
2

Je travaille sur MySQL 5.1.3 et j'utilise PHPMyAdmin 3.1.3.1 pour y accéder. Avec PHP comme langage de script côté serveur. Mon énoncé de problème est que nous pouvons appeler une procédure ou une fonction stockée à partir de l'instruction Trigger de sorte que chaque fois qu'un déclencheur INSERT | UPDATE | DELETE est appelé, il appelle le SP pour mettre à jour d'autres tables selon la logique définie.comment appeler StoredProcedure ou des fonctions à partir d'un déclencheur MySQL?

Répondre

6

Regardez ici Mysql Trigger Syntax

mysql> delimiter // 
mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account 
    -> FOR EACH ROW 
    -> BEGIN 
    ->  IF NEW.amount < 0 THEN 
    ->   SET NEW.amount = 0; 
    ->  ELSEIF NEW.amount > 100 THEN 
    ->   SET NEW.amount = 100; 
    ->  END IF; 
    -> END;// 
mysql> delimiter; 

Il peut être plus facile de définir un séparément, puis procédure stockée appeler à partir de la gâchette à l'aide d'une simple déclaration CALL. Ceci est également avantageux si vous souhaitez appeler la même routine depuis plusieurs déclencheurs.

Il existe des limites à ce qui peut apparaître dans les déclarations qu'un déclencheur exécute lorsqu'il est activé:

Le déclencheur ne peut pas utiliser l'instruction CALL pour appeler des procédures stockées qui renvoient des données au client ou que l'utilisation de SQL dynamique. (Les procédures stockées sont autorisés à renvoyer des données à la détente grâce à des paramètres OUT ou INOUT.)

Le déclencheur ne peut pas utiliser des instructions qui commencent explicitement ou implicitement ou mettre fin à une transaction telle que STARTTRANSACTION, COMMIT ou ROLLBACK.

+0

Merci @ Octopus-Paul! bonne prédiction: D .. –

Questions connexes