这是我的触发器
CREATE TRIGGER before_insert_user_credit
BEFORE INSERT
ON user_credit
FOR EACH ROW
BEGIN
UPDATE profiles SET credit = credit + NEW.amount WHERE user_id = NEW.user_id ;
END
它很简单,工作正常
我错误地在user_credit
进行了插入,我忘了设置amount
的值...该字段为整数,因此该值存储为默认值为0
所以我的profiles.credit
中有1000个,所以我认为它不会改变它
1000 + 0 = 1000
但profiles.credit
也改为0
为什么会这样,我该如何防止这种情况?
答案 0 :(得分:1)
由于它是插入之前,省略的NEW.amount可能是NULL。 some_number + null
为null,因此,当您尝试将其更新为null时,credit可能是一个不可为空的数字字段,其默认值为0。
请尝试... SET credit = credit + IFNULL(NEW.amount, 0) ...
。