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 NULL
和 IS NOT NULL
检查 NULL
s.
...
IF NEW.statut IS NOT NULL
OR OLD.statut IS NOT NULL THEN
...
我尝试在用户更新个人资料时更新 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 NULL
和 IS NOT NULL
检查 NULL
s.
...
IF NEW.statut IS NOT NULL
OR OLD.statut IS NOT NULL THEN
...