在mysql中使用表上的触发器

时间:2013-07-18 12:20:25

标签: mysql triggers

我在下表中创建了一个触发器,

  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

我需要帮助来解决问题所在。谢谢。

2 个答案:

答案 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")