MySQL 触发器中 Contact 表 BEFORE INSERT 触发器出现 contactable 为 null 的问题及解决方法
在 MySQL 触发器中,Contact 表设置了一个 BEFORE INSERT 触发器,触发器中定义了以下语句:
DECLARE `contactable` BIT(1);
SELECT `contactable` INTO `contactable` FROM `Profile` WHERE `username` = NEW.`contact`;
当向 Contact 中插入一行时,contactable 的值为 null,而实际上 Profile 中 contactable 的值为 1。
可能是因为在 Profile 表中没有匹配到对应的 username,导致查询结果为 null。可以先确认 Profile 表中是否存在该 username,如果存在,再检查触发器中的语句是否正确。可以尝试修改语句为:
DECLARE `contactable` BIT(1) DEFAULT 0;
SELECT `contactable` INTO `contactable` FROM `Profile` WHERE `username` = NEW.`contact` LIMIT 1;
这样在 Profile 表中找不到对应的 username 时,contactable 的默认值就为 0,避免了 null 值的出现。同时,使用 LIMIT 1 可以确保查询结果只返回一行。
原文地址: https://www.cveoy.top/t/topic/m0Tq 著作权归作者所有。请勿转载和采集!