【问题标题】:Trigger delete BEFORE INSERT在插入之前触发删除
【发布时间】:2016-07-12 08:08:22
【问题描述】:

我在 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”,因为它已被调用此存储函数/触发器的语句使用。

会是什么?

【问题讨论】:

    标签: mysql triggers


    【解决方案1】:

    这是 mysql 中的一个已知限制,您必须找到解决方法。在这种特殊情况下,我什至不会使用触发器,而是使用 replace into ...insert ... on duplicate key update ... 代替插入。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多