在INSERT Trigger之后插入表a_temp并从表a_temp中删除

时间:2017-02-20 09:08:13

标签: mysql sql triggers

我有两个表员工 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.

如何创建一个触发器插入事件,删除具有触发器的表上的数据?

1 个答案:

答案 0 :(得分:0)

你不能这样做。如果要删除employee表中的所有数据,为什么还需要该表。直接插入employees_audit。