问题描述
做一个mysql触发器,实现device_info表中插入一条记录,在province_statistics表中,将对应province的设备数加一。
触发定义无问题,但是device_info表中插入一条记录后,province_statistics表中对应的数据没有加一。
device_info表
province_statistics表(部分)
触发器
DELIMITER $$ CREATE TRIGGER province_statistics AFTER INSERT ON device_info FOR EACH ROW BEGIN DECLARE count INT; SELECT COUNT(*) INTO count FROM province_statistics WHERE province like concat('%',NEW.province,'%'); IF count > 0 THEN UPDATE province_statistics SET total = total + 1 WHERE province like concat('%',NEW.province,'%'); END IF; END$$ DELIMITER ;
问题原因
province_statistics表中的total字段初始值为 NULL
,而不是0,在 SQL 中,将 NULL
与数字相加通常会导致结果为 NULL
。这是因为 NULL
代表未知值,而任何与未知值的运算都会产生未知的结果,因此结果也是 NULL
。