0

我正在尝试创建一个触发器,每次在我的表 tb_produto_parent 中插入一个新数据时,我都需要更新 columm cod_prod 添加一个。

跟随触发器:

DELIMITER $$

create trigger trgAdicionaUm after insert
on tb_produto_parent
for each row

BEGIN
    select cod_prod from tb_produto_parent;
update 
    tb_produto_parent set cod_prod = cod_prod +1;       
END;

当我尝试执行代码时,MySQL 显示错误:

Error Code: 1415 Not allowed to return a result set from a trigger.

谢谢 !

4

2 回答 2

0

Error Code: 1415 Not allowed to return a result set from a trigger.

查看您的触发器:

BEGIN
    select cod_prod from tb_produto_parent;
update 
    tb_produto_parent set cod_prod = cod_prod +1;       
END;

似乎该select声明是导致此错误的原因。去掉它。

于 2013-11-14T18:02:31.230 回答
0

您的代码有两个主要问题

  1. 您不能SELECT在触发器中单独使用它,因为触发器不会将结果集返回给客户端

  2. 您不能在 MySQL 中拥有触发器UPDATE的同一张表()上使用 DML 语句(在您的情况下) 。tb_produto_parent因此,即使您解决了第一个问题,您仍然无法更新tb_produto_parent触发器中的任何行。

在 MySQL 触发器中唯一可以做的事情是通过使用BEFORE触发器的事件来更改正在插入的行的列的值。

一种可能的解决方案是改用存储过程。

于 2013-11-15T01:56:03.620 回答