最近阅读《MySQL必知必会》一书时,有关触发器那一章有个实例代码无法正确运行,书中代码为:

CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT 'Product added';

执行的时候会报ERROR 1415 (0A000): Not allowed to return a result set from a trigger的错误。MySQL5早期版本是支持的,现在的新版本已经不支持这种写法。触发器不允许出现SELECT *的形式,因为这会返回一个结果集,而这是不允许的,所以会报出这种错。

触发器中可以使用SELECT  INTO的形式来进行查询,将结果放进一个变量,然后查询该变量。

CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT 'Product added' INTO @arg;

整个实验结果如下:

ERROR 1415 (0A000): Not allowed to return a result set from a trigger

相关文章: