【发布时间】:2017-02-20 09:08:13
【问题描述】:
我有两个表employees和employees_audit,我在插入后创建了一个触发器,它将向employees_audit插入数据然后从员工表中删除数据
CREATE TABLE employees (
employeeNumber INT NOT NULL,
lastname VARCHAR(50) NOT NULL
);
CREATE TABLE employees_audit (
id INT AUTO_INCREMENT PRIMARY KEY,
employeeNumber INT NOT NULL,
lastname VARCHAR(50) NOT NULL,
changedat DATETIME DEFAULT NULL,
action VARCHAR(50) DEFAULT NULL
);
这就是触发器
CREATE DEFINER=`root`@`localhost` TRIGGER `test`
AFTER INSERT ON `employee`
FOR EACH ROW
BEGIN
insert into employees_audit(employeeNumber,lastname,changedat,action) values(NEW.employeeNumber,NEW.lastname,CURDATE(),'wew'); delete from employee;
END
但是当我在表员工上插入数据时,我得到了这个错误
#1442 - Can't update table 'employee' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
如何创建触发器插入事件,删除具有触发器的表上的数据?
【问题讨论】:
-
雇员表插入审计表后要删除,那为什么需要雇员表,直接插入审计表?无需触发。
-
我被要求做那样的事情
-
请谁反对这个问题给出一个理由,所以我知道我的错误Thx!
-
如果“我被要求做那样的事情”,那么有问题;数据库设计/要求/您的理解。你也需要寻找这方面,因为从根本上你做错了。
-
是的,我也觉得这很奇怪.. 但是,我仍然希望得到解决方案:)