2

可以从触发器中执行存储过程和 sql 查询吗?

过程加查询

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

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

如果是这样,规则和示例链接是什么?我一直找不到。

4

1 回答 1

2

是的,您可以像这样从触发器调用存储过程:

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

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

于 2012-09-20T16:36:13.090 回答