插入负数年龄时自动设为0的触发器代码异常,求排查修正
你的触发器代码问题分析及修正
原代码存在两个核心问题:
- 错误使用
UPDATE语句:这是BEFORE INSERT触发器,此时新记录还未写入customers表,不能用UPDATE操作表,应该直接修改触发器内代表待插入行的NEW对象 - 语法不完整:
SET age = 0语句末尾缺少分号,不符合SQL语法规范
修正后的正确代码:
CREATE TRIGGER verify_age BEFORE INSERT ON customers FOR EACH ROW WHEN (NEW.age < 0) BEGIN SET NEW.age = 0; END;
逻辑说明:BEFORE INSERT触发器触发时,直接把待插入的NEW.age值替换为0,这样最终插入到表中的就是修正后的合法值,无需额外更新表操作。
内容的提问来源于stack exchange,提问作者TheRi
相关产品推荐
相关产品推荐

