该触发器返回错误信息的原因是在触发器中使用了未定义的变量 '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 $$ 
MySQL 触发器错误信息:'Insertion aborted' 解决方案

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

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