检查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
该语句没有明显的语法错误,但可能存在以下问题:
-
触发器中的变量名需要用反引号(
)包含,如status、value、level`。 -
在第三个 SELECT 语句中,
value作为字段名需要用反引号包含。 -
在第四个 SELECT 语句中,
lower和upper作为字段名需要用反引号包含。 -
在 IF 语句中,逻辑运算符应该使用 AND 或 OR,而不是用逗号分隔条件。
-
在 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 $$
原文地址: http://www.cveoy.top/t/topic/blbz 著作权归作者所有。请勿转载和采集!