2013-11-14 54 views
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. 

谢谢!

回答

0

有你的代码有两个主要问题

  1. 你不能使用SELECT它拥有一个触发器,因为触发没有一个结果返回给客户端

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

你可以在MySQL触发唯一要做的是改变用BEFORE事件触发插入行的列值。

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

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语句是这个错误的原因。去掉它。

+0

添加到@mah所说的内容中,您将返回SELECT语句中的结果集,它看起来像只需要一个值。所以,请修改它 – Santhosh