Har*_*rup 2 mysql sql triggers stored-procedures
我正在研究MySQL 5.1.3并使用PHPMyAdmin 3.1.3.1来访问它.使用PHP作为服务器端脚本语言.我的问题陈述是我们可以从Trigger语句调用存储过程或函数,这样当调用INSERT | UPDATE | DELETE触发器时,它会根据定义的逻辑调用SP来更新其他一些表.
看这里Mysql触发器语法
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;
Run Code Online (Sandbox Code Playgroud)
可以更容易地单独定义存储过程,然后使用简单CALL语句从触发器调用它.如果要从多个触发器中调用相同的例程,这也是有利的.
触发器在激活时执行的语句中可能出现的内容存在一些限制:
触发器不能使用该CALL语句来调用将数据返回给客户端或使用动态SQL的存储过程.(允许存储过程通过OUT或INOUT参数将数据返回到触发器.)
触发不能使用显式或隐式开始或结束交易,如语句START TRANSACTION,COMMIT或ROLLBACK.