MySQL 触发器错误信息:'Insertion aborted' 解决方案
该触发器返回错误信息的原因是在触发器中使用了未定义的变量 'Insertion aborted' 作为错误信息,应该使用字符串字面量替代,例如 'SET MESSAGE_TEXT = 'Insertion aborted''。另外,建议将触发器中的 'BIT(1)' 数据类型改为 'BOOLEAN',以提高代码可读性和可维护性。
CREATE TRIGGER `CommunicationContact_BEFORE_INSERT` BEFORE INSERT ON `CommunicationContact` FOR EACH ROW
BEGIN
DECLARE `var` BOOLEAN;
SELECT `contactable` INTO `var` FROM `CommunicationProfile` WHERE `username` = NEW.`contact`;
IF `var` = 1 THEN
UPDATE `CommunicationProfile` SET
`contactrequests` = CASE NEW.`status` WHEN 0 THEN `contactrequests` + 1 ELSE `contactrequests` END,
`contactrequested` = CASE NEW.`status` WHEN 1 THEN `contactrequested` + 1 ELSE `contactrequested` END
WHERE `username` = NEW.`username`;
ELSE
SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Insertion aborted';
END IF;
END $$
原文地址: https://www.cveoy.top/t/topic/m5vE 著作权归作者所有。请勿转载和采集!