BEGIN
IF
NEW.id <> OLD.id OR
NEW.customerId <> OLD.customerId OR
THEN BEGIN
INSERT INTO customerDocuments_audit
(
id,customerId,auditActionDate,auditAction)values(NEW.id,NEW.customerId, NOW(),'update'
);
END; END IF;
END$$
如果我尝试更新包含 NULL 值的列。列正在更新,但它没有在审核表中插入任何值。
最佳答案
您需要专门检查 NULL
值,因为在常规逻辑运算中使用 NULL
值将始终返回 false
结果。将您的 IF
语句更改为:
IF
NEW.id <> OLD.id OR
NEW.id IS NULL AND OLD.id IS NOT NULL OR
NEW.id IS NOT NULL AND OLD.id IS NULL OR
NEW.customerId <> OLD.customerId OR
NEW.customerId IS NULL AND OLD.customerId IS NOT NULL OR
NEW.customerId IS NOT NULL AND OLD.customerId IS NULL
关于mysql - 包含 NULL 作为值的列未在审计表中进行审计。我正在使用更新后触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54343317/