是否可以在触发器中执行存储过程和sql查询?
程序加查询
SET @tmp = (SELECT fvalue FROM ftable WHERE id=2);
SET @SQL = CONCAT('INSERT INTO ',@tmp,' VALUES (''buhambug'')');
PREPARE stmt FROM @SQL;
EXECUTE stmt;
如果是,那么规则和示例的链接是什么?我找不到任何东西。
答案 0 :(得分:2)
是的,您可以通过以下触发器调用存储过程:
Create trigger foo after insert on table for each row
BEGIN
call your_procedure(params);
END$$
注意结束分隔符。如果;
也是触发器内的默认分隔符,那么它将无法正常工作,因为MySQL将单独处理每个命令并抛出错误。您希望触发器内的整个代码一起执行。因此,在定义触发器之前,通过Delimiter $$
声明一个不同的分隔符,如 $$ 。然后,;
将在触发器内正常工作。通过 $$ 终止触发器后,请不要忘记恢复默认分隔符。