2

下の表にトリガーを作成していますが、

  CREATE TABLE test( id int auto_increment primary key,
              name varchar(40),
              debit decimal(19,2) default "0.00",
              fee decimal(19,2) default "0.00",
              balance decimal(19,2) default "0.00")
              ENGINE=INNODB;

以下はトリガーコードです。

CREATE TRIGGER update_test BEFORE INSERT ON test t FOR EACH ROW
(select debit from test d where d.id="1")  
SET new.balance=30 + d.debit;

このトリガーは、テスト テーブルへの挿入時にテスト テーブル (残高列) を更新することを想定しています。トリガーは、テスト テーブルから借方の値を選択し、テスト テーブルの残高列を更新する前に 30 を追加することを想定しています。動作しません。このエラーが発生し続けます

ERROR 1415 (0A000): Not allowed to return a result set from a trigger

問題が何であるかを理解する方法について助けが必要です。よろしくお願いします。

4

2 に答える 2

1

これは機能します。

CREATE TRIGGER update_test BEFORE INSERT ON test FOR EACH ROW
set @d=(select debit from test where id="1"),  
new.balance= 30 + Coalesce(@d,0);

上記のコードは機能します。試してみて、あなたの反応を教えてください。

于 2013-07-18T18:44:42.270 に答える
0

これを試して:

CREATE TRIGGER update_test BEFORE INSERT ON test t FOR EACH ROW
  SET new.balance=30 + (select debit from test d where d.id="1")  
于 2013-07-18T18:21:53.583 に答える