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