执行“删除前”触发器时,MySQL会发出警告

时间:2015-08-17 16:01:08

标签: mysql triggers

我正在设计一个小型数据库(SQLfiddle)。我正在尝试创建触发器,以便在从downtime删除行时,匹配的历史记录行会添加到downtimeHistory

CREATE TRIGGER `announce`.`downtime_BEFORE_DELETE` BEFORE DELETE ON `downtime` FOR EACH ROW
BEGIN
    INSERT INTO downtimeHistory (serviceName, startTime) VALUES(OLD.serviceName, OLD.startTime);
END

但是,MySQL并不关心这个触发器。它允许我创建它,它似乎正常运行,但每次执行触发器时都会抛出错误:

1 row(s) affected, 1 warning(s): 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.

如果我尝试对idendTime列执行某些操作,这对我有意义,但更新startTime应该无关紧要,因为它只提供默认值。

那么......为什么会抛出这个错误?我怎么阻止它?我应该忽略它吗?

1 个答案:

答案 0 :(得分:1)

您的触发器插入到downtimeHistory表中。 id列是AUTO_INCREMENT。

错误消息告诉您不允许此组合。

INSERT INTO....语句隐式导致设置ID值。