在插入之前触发删除

时间:2016-03-24 16:27:23

标签: mysql triggers

我在Mysql中创建了以下触发器:

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 个答案:

答案 0 :(得分:1)

这是mysql的一个已知限制,你必须找到一个解决方法。在这个特定的例子中,我甚至不使用触发器,而是使用replace into ...insert ... on duplicate key update ...而不是插入。

Replace into删除旧行并插入新行,insert ... on duplicate key update ...执行更新而不是插入,如果记录已存在。