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 回答