2016-03-24 160 views
0

我創建在MySQL中,下面的觸發器:觸發刪除BEFORE INSERT

DELIMITER // 

CREATE TRIGGER delete_G8_dados_indicadores_antes_insert 
BEFORE INSERT 
    ON G8_dados_indicadores FOR EACH ROW 

BEGIN 

    delete from G8_dados_indicadores where id_indicador=NEW.id_indicador and ano = NEW.ano; 

END; // 

DELIMITER ; 

的想法是,在G8_dados_indicadores表中輸入一個記錄之前,系統將觸發觸發自動移除現有的記錄。但是要運行插入,mysql會返回以下錯誤:

1442 - 無法更新存儲的函數/觸發器中的表'G8_dados_indicadores',因爲它已被調用此存儲的函數/觸發器的語句使用。

它可能是什麼?

回答

1

這是一個已知的MySQL限制,你必須找到解決方法。在這個特定的例子中,我甚至不會使用觸發器,但是使用replace into ...insert ... on duplicate key update ...而不是插入。

Replace into刪除舊行並插入新行,如果記錄已存在,則insert ... on duplicate key update ...執行更新而不是插入。