我在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'在存储的函数/触发器中,因为它已被调用此存储函数/触发器的语句使用。它有什么用?
答案 0 :(得分:1)
这是mysql的一个已知限制,你必须找到一个解决方法。在这个特定的例子中,我甚至不使用触发器,而是使用replace into ...或insert ... on duplicate key update ...而不是插入。
Replace into
删除旧行并插入新行,insert ... on duplicate key update ...
执行更新而不是插入,如果记录已存在。