触发器中的 IF Else 条件未能检测到更新语句之前的 FirstConnectionDatetime 参数的 NULL 值

问题描述 投票:0回答:1

我设置了更新后 MariaDB 触发器,以根据

FirstConnectionDatetime
表中
CustomerPurchases
的值执行某些操作。但是,我注意到,即使我没有在更新语句中提供
IF NEW.FirstConnectionDatetime IS NOT NULL
参数(因此它应该为 NULL),触发条件
FirstConnectionDatetime
也会错误地评估为 true。这种意外行为导致我的数据库操作出现问题。

mysql database mariadb
1个回答
0
投票

当我在更新语句中没有提供 FirstConnectionDatetime 参数时(因此它应该为 NULL)

假设 UPDATE 查询中没有列。在这种情况下,UPDATE之前的值和之后的值是相同的。并且

OLD.column
NEW.column
都等于这个值。

OLD.column
包含UPDATE之前的值,
NEW.column
相应包含UPDATE成功执行后的值。并且它们都不存储查询中提供的值(如果未提供则为 NULL)!

© www.soinside.com 2019 - 2024. All rights reserved.