1

所以,我有一个带有一些字段的 MySQL 表客户

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

我想写一个触发器,它更新State字段它需要将State的值设置为1,如果Description被更新并获取值完整

到目前为止,我想出了这个:

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 - 无法更新存储函数/触发器中的表“客户”,因为它已被调用此存储函数/触发器的语句使用。

任何帮助表示赞赏!

4

1 回答 1

1

我认为你只需要设置 NEW.State 而不是运行 UPDATE 语句:

IF NEW.Description = 'completed' THEN  
   SET NEW.State = 1;
END IF
于 2013-02-26T14:25:20.853 回答