在 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 可以确保查询结果只返回一行。

MySQL 触发器中 Contact 表 BEFORE INSERT 触发器出现 contactable 为 null 的问题及解决方法

原文地址: https://www.cveoy.top/t/topic/m0Tq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录