MySQL 触发器中判断 NULL 值不生效?问题解析与解决方案

前言

在 MySQL 数据库开发中,触发器是一个非常实用的功能,它能在数据表发生插入、更新或删除操作时自动执行指定的逻辑。但在实际使用中,很多开发者会遇到一个棘手的问题:当触发器中涉及 NULL 值判断时,预期的逻辑往往不生效。本文就来详细分析这一问题的原因,并提供具体的解决方案。

一、问题现象:为什么 NULL 判断在触发器中 “失灵”?

先来看一个常见的错误示例。假设我们有一张user表,包含name(姓名)和age(年龄)字段,其中age允许为 NULL。现在需要创建一个触发器,在更新用户信息时,若age被设置为 NULL,则自动记录一条日志。
开发者可能会写出这样的触发器代码:

DELIMITER //
CREATE TRIGGER check_user_age
BEFORE UPDATE ON user
FOR EACH ROW
BEGIN
    -- 错误的NULL判断方式
    IF NEW.age = NULL THEN
        INSERT INTO operation_log (content) VALUES ('年龄被设为NULL');
    END IF;
EN

你可能感兴趣的:(MySQL 触发器中判断 NULL 值不生效?问题解析与解决方案)