2013-11-14 123 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