如何在INSERT触发器中正确判断插入的字段值是否为NULL?
问题原因分析
- 触发器中访问待插入行的字段必须加
NEW前缀,原代码中直接写correo IS NULL,MySQL无法识别该字段归属,判断条件永远不会触发。 - 原
SET语句末尾多了一个多余的右括号,会直接导致语法报错。
修正后的完整代码
DELIMITER // CREATE TRIGGER tr_i_correo BEFORE INSERT ON examen_final FOR EACH ROW BEGIN -- 校验新插入行的correo字段是否为NULL IF NEW.correo IS NULL THEN SET NEW.correo = 'jatuesta@mail.com'; END IF; END // DELIMITER ;
扩展说明
如果需要同时覆盖字段被赋值为空字符串的场景,可以修改判断条件为:
IF NEW.correo IS NULL OR TRIM(NEW.correo) = '' THEN
内容的提问来源于stack exchange,提问作者Jhonathan David Atuesta M
相关产品推荐
相关产品推荐

