该语句没有明显的语法错误,但可能存在以下问题:

  1. 触发器中的变量名需要用反引号()包含,如 statusvaluelevel`。

  2. 在第三个 SELECT 语句中,value 作为字段名需要用反引号包含。

  3. 在第四个 SELECT 语句中,lowerupper 作为字段名需要用反引号包含。

  4. 在 IF 语句中,逻辑运算符应该使用 AND 或 OR,而不是用逗号分隔条件。

  5. 在 SIGNAL 语句中,SQLSTATE 应该使用合适的值,如 '45001'。

修改后的语句如下:

CREATE TRIGGER CommunityAnswer_BEFORE_INSERT BEFORE INSERT ON CommunityAnswer FOR EACH ROW BEGIN DECLARE status BIT(1); SELECT status INTO status FROM CommunityQuestion WHERE id = NEW.questionid; DECLARE value INT; SELECT value INTO value FROM CommunityMember WHERE member = NEW.answerer AND community = NEW.community; DECLARE level INT; SELECT level INTO level FROM CommunityLevel WHERE value BETWEEN lower AND upper; IF status = 1 OR value < level THEN SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Aborted'; END IF; END $$

检查mysql语句错误CREATE TRIGGER CommunityAnswer_BEFORE_INSERT BEFORE INSERT ON CommunityAnswer FOR EACH ROWBEGIN DECLARE status BIT1; SELECT status INTO status FROM CommunityQuestion WHERE id = NEWquestio

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

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