MySql 无法更新 DATETIME 字段 - 未找到记录

MySql cannot update a DATETIME field - no record found

我在 MySql 5.6.10 中有一个 table 定义如下:

当我为 id_failed_delivery_log 列上的特定记录过滤执行 select 查询(来自 HeidiSQL 客户端)时,成功找到了记录,但是当我对 UPDATE 使用相同的过滤器时命令,然后没有找到记录,也没有报错:

当我使用相同的过滤器更新不同的列时,更新有效并且我可以看到更新后的值。那么这个特定列的更新有问题。

我也尝试过使用时间函数而不是硬编码日期值进行更新,例如使用 now() 函数,但我仍然得到相同的结果,但找不到记录。

会不会是'Default'的值设置为CURRENT_TIMESTAMP造成的?

经过进一步调查,我找到了无法更新该字段的原因。我并不完全熟悉数据库定义,我发现在同一模式中有一个触发器强制保持 date_created 列具有相同的值:

SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_ALL_TABLES';
DELIMITER //
CREATE TRIGGER `failed_delivery_log_before_update` BEFORE UPDATE ON 
`failed_delivery_log` FOR EACH ROW BEGIN

    SET NEW.date_created = OLD.date_created ; 

END//
DELIMITER ;
SET SQL_MODE=@OLDTMP_SQL_MODE;

为了测试,我暂时删除了这个触发器。删除后,更新工作正常。 SQL客户端没有报告触发执行,所以很难查到它的执行。