创建触发器时出错

时间:2013-11-14 17:34:26

标签: mysql stored-procedures triggers

我正在尝试创建一个触发器,每次在我的表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.

谢谢!

2 个答案:

答案 0 :(得分: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语句似乎是导致此错误的原因。删除它。

答案 1 :(得分:0)

您的代码存在两个主要问题

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

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

  3. 您在MySQL触发器中唯一能做的就是通过使用BEFORE事件来触发插入行的列的值。

    可能的解决方案是使用存储过程。