我在下表中创建了一个触发器,
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
我需要帮助来解决问题所在。谢谢。
答案 0 :(得分: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);
以上代码可以使用,试一试并告诉我你的回复。
答案 1 :(得分: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")