2017-02-20 50 views
-1

我有兩個表員工employees_audit,我創建插入後觸發器在那裏將插入數據employees_audit,然後刪除表中的員工數據INSERT觸發器後做插入表a_temp,並從表中刪除a_temp

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. 

如何創建觸發器insert事件上具有觸發器表刪除數據?

+1

您想在插入審計表後刪除employees表,那麼爲什麼您需要僱員表,直接插入審計?無需觸發。 – Anil

+0

我被要求做類似那樣的東西 – Calvin

+0

請誰倒下了這個問題給出一個理由,所以我知道我的錯誤Thx! – Calvin

回答

0

你不能這樣做。如果您要從員工表中刪除所有數據,爲什麼需要該表?直接插入employees_audit。

+0

我被要求做類似那樣的事情 – Calvin

+0

你不能在激活觸發器的表中刪除行。您可以在應用程序中編寫邏輯而不使用觸發器 – Rahul