0

テーブル tb_produto_parent に新しいデータを挿入するたびに、列 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

あなたのコードには2つの大きな問題があります

  1. SELECTトリガーはクライアントに結果セットを返さないため、トリガーで単独で使用することはできません

  2. MySQLでトリガーがあるUPDATE同じテーブル( )でDMLステートメント(あなたの場合)を使用することはできません。したがって、最初の問題を修正しても、トリガー内のtb_produto_parent行を更新することはできません。tb_produto_parent

MySQL トリガーでできることはBEFORE、トリガーのイベントを使用して、挿入される行の列の値を変更することだけです。

考えられる解決策は、代わりにストアド プロシージャを使用することです。

于 2013-11-15T01:56:03.620 に答える
0

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

Looking at your trigger:

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

It would seem the select statement is the cause of this error. Remove it.

于 2013-11-14T18:02:31.230 に答える