2013-02-26 93 views
1

所以,我有一些领域MySQL在更新触发

table <Customers> 
ID Name Description State 
0  Jack waiting  0 
1  Jane complete  1 

我想写一个触发器,其更新状态字段 需要设置状态为1的值,如果一个MySQL表负荷消费该说明 被更新,并获得完整的价值

到目前为止,我已经想出了这一点:

delimiter $$ 
CREATE TRIGGER customerUpdated 
    BEFORE UPDATE ON Customers 
    FOR EACH ROW 
BEGIN 
    IF NEW.Description = 'completed' THEN 
    UPDATE Customers SET State = '1' WHERE id = OLD.id; 
END IF; 
END$$ 
delimiter ; 

但我得到的错误:

1442 - 无法更新已存储的函数/触发器中的'Customers'表,因为它已被调用此存储的函数/触发器的语句使用。

任何帮助表示赞赏!

回答

1

我想你只需要设置NEW.State,而不是运行在所有的UPDATE语句:

IF NEW.Description = 'completed' THEN 
    SET NEW.State = 1; 
END IF 
+0

就像一个魅力!保护你! – 2013-02-26 14:29:00

+0

@RikBauwens - np,很高兴我能帮忙! – sgeddes 2013-02-26 14:29:28