触发MYSQL错误1442

触发MYSQL错误1442,mysql,triggers,Mysql,Triggers,我使用这个查询 更新DataBase.employee SET time_out='2014-10-22 16:41:09'其中IDREC='4945' 错误代码:1442 无法更新存储函数/触发器中的表“employee”,因为调用此存储函数/触发器的语句已使用它。您无法更新调用触发器的表employee: 在存储的函数或触发器中,不允许修改 已被用户用于读写的表 调用函数或触发器的语句 这样做将生成错误1442: 解决方案:而不是更新后,将其设置为更新前触发器,以便在插入之前为字段设置新值-

我使用这个查询

更新DataBase.employee SET time_out='2014-10-22 16:41:09'其中IDREC='4945'

错误代码:1442
无法更新存储函数/触发器中的表“employee”,因为调用此存储函数/触发器的语句已使用它。

您无法更新调用触发器的表employee:

在存储的函数或触发器中,不允许修改 已被用户用于读写的表 调用函数或触发器的语句

这样做将生成错误1442:

解决方案:而不是更新后,将其设置为更新前触发器,以便在插入之前为字段设置新值-如果时间工作是新条目中的字段,则需要在插入之前进行更新-可能的SQL不会被测试:

Error Code: 1442
Can't update table 'employee' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

是的,您不能在执行触发器的同一个表上执行insert/delete/update操作。您最多可以将该值设置为set new。time\u work=TIMEDIFFtime\u out,time\u in;FWIW,你不能更改NEW.time_在AFTER trigger.ah@BillKarwin中工作。你是对的,这是一个AFTER update trigger,所以设置在这里不起作用,需要在更新之前。
Error Code: 1442
Can't update table 'employee' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
DELIMITER //
CREATE TRIGGER `Salary` BEFORE UPDATE ON `employee` 
    FOR EACH ROW BEGIN
        IF OLD.time_out <> NEW.time_out THEN
            SET NEW.time_work=TIMEDIFF(time_out,time_in);
        END IF;
    END;
DELIMITER ;