mysql 触发更新:如何检测 NULL 值?

mysql trigger on update: how to detect NULL values?

我尝试在用户更新个人资料时更新 porcentageComplete 个人资料:

状态字段:

`statut` enum('Marié','En couple','Divorcé') DEFAULT NULL,

触发器是:

DROP TRIGGER IF EXISTS update_user;
DELIMITER $$

CREATE TRIGGER update_user
    BEFORE UPDATE
    ON users FOR EACH ROW
BEGIN
    DECLARE porcentage int default 0;
    IF NEW.statut!=NULL OR OLD.statut!=NULL THEN 
        set porcentage = porcentage + 1;
    END IF;
    SET NEW.porcentageCompleted = porcentage;

END$$ 

porcentageCompleted 更新不正确:看起来 NULL 比较不正确

=<>(或 !=)与 NULL 值进行比较会产生 NULL 本身,因此不正确,即错误。使用 IS NULLIS NOT NULL 检查 NULLs.

...
IF NEW.statut IS NOT NULL
    OR OLD.statut IS NOT NULL THEN 
...

值得一读:3.3.4.6 Working with NULL Values