【问题标题】:how to call StoredProcedure or Functions from a MySQL Trigger?如何从 MySQL 触发器中调用存储过程或函数?
【发布时间】:2010-11-20 08:18:16
【问题描述】:

我正在使用 MySQL 5.1.3 并使用 PHPMyAdmin 3.1.3.1 来访问它。使用 PHP 作为服务器端脚本语言。我的问题是,我们能否从 Trigger 语句中调用存储过程或函数,以便在调用 INSERT|UPDATE|DELETE 触发器时,它会根据定义的逻辑调用 SP 来更新其他一些表。

【问题讨论】:

    标签: mysql sql stored-procedures triggers


    【解决方案1】:

    看这里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;  
    

    单独定义一个存储过程然后使用简单的CALL 语句从触发器调用它会更容易。如果您想从多个触发器中调用相同的例程,这也是有利的。

    触发器在激活时执行的语句中可以出现的内容有一些限制:

    触发器不能使用CALL 语句来调用向客户端返回数据或使用动态SQL 的存储过程。 (允许存储过程通过OUTINOUT参数向触发器返回数据。)

    触发器不能使用显式或隐式开始或结束事务的语句,例如 START TRANSACTIONCOMMITROLLBACK

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多