0
DELIMITER //
CREATE TRIGGER `Salary` AFTER UPDATE ON `employee`
FOR EACH ROW BEGIN
IF OLD.time_out <> NEW.time_out THEN
UPDATE employee SET time_work=TIMEDIFF(time_out,time_in);
END IF;
END;
DELIMITER ;
我用这个查询触发MySQL错误1442
UPDATE DataBase
。 employee
SET time_out
=“2014年10 16点41分09秒” WHERE IDREC
=“4945”
THERE错误代码:1442 无法更新在存储函数/触发器表“雇员”,因为它已经被使用通过调用这个存储的函数/触发器的语句。
yes您无法在执行触发器的同一张表上执行插入/删除/更新操作。最好你可以设置值为'set new.time_work = TIMEDIFF(time_out,time_in);' – 2014-10-22 07:13:01
FWIW,你不能在AFTER触发器中改变'NEW.time_work'。 – 2014-10-22 07:15:36
@BillKarwin你是正确的更新后触发器,所以设置不会在这里工作,它需要在更新之前。 – 2014-10-22 07:16:55