mysql触发器中的程序可以工作吗?

时间:2012-09-20 16:24:03

标签: mysql sql

是否可以在触发器中执行存储过程和sql查询?

程序加查询

SET @tmp = (SELECT fvalue FROM ftable WHERE id=2);

SET @SQL = CONCAT('INSERT INTO ',@tmp,' VALUES (''buhambug'')');
PREPARE stmt FROM @SQL;
EXECUTE stmt;

如果是,那么规则和示例的链接是什么?我找不到任何东西。

1 个答案:

答案 0 :(得分:2)

是的,您可以通过以下触发器调用存储过程:

Create trigger foo after insert on table for each row
 BEGIN
  call your_procedure(params);
 END$$

注意结束分隔符。如果;也是触发器内的默认分隔符,那么它将无法正常工作,因为MySQL将单独处理每个命令并抛出错误。您希望触发器内的整个代码一起执行。因此,在定义触发器之前,通过Delimiter $$声明一个不同的分隔符,如 $$ 。然后,;将在触发器内正常工作。通过 $$ 终止触发器后,请不要忘记恢复默认分隔符。