MySQL 在 END 附近创建触发器语法错误
MySQL Create Trigger Syntax Error near END
当我尝试 运行 我的 table/trigger 创建脚本时,出现以下错误:
ERROR 1064 (42000) at line 19: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET NEW.fines_remaining = NEW.total_fines;
END IF;
END' at line 5
以下是导致错误的 CREATE TRIGGER 代码:
DELIMITER //
CREATE TRIGGER fines_trigger BEFORE INSERT ON student
FOR EACH ROW
BEGIN
IF TUPLE.fines_remaining > TUPLE.total_fines
SET NEW.fines_remaining = NEW.total_fines;
END IF;
END; //
DELIMITER ;
我不明白为什么会这样,我觉得语法没问题,但显然不是,因为会抛出一些错误。
编辑:发布此消息后,我立即注意到在我弄清楚 'OLD' 和 'NEW' 之前我仍然使用这些 TUPLE 'variables'。我正在更改它们并会立即更新。
您在 if 条件
之后缺少 then
DELIMITER //
CREATE TRIGGER fines_trigger BEFORE INSERT ON student
FOR EACH ROW
BEGIN
IF new.fines_remaining > old.total_fines then
SET NEW.fines_remaining = NEW.total_fines;
END IF;
END; //
DELIMITER ;
另外TUPLE
我在上面的触发器里改了new和old,你可能需要根据自己的需要调整逻辑。
当我尝试 运行 我的 table/trigger 创建脚本时,出现以下错误:
ERROR 1064 (42000) at line 19: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET NEW.fines_remaining = NEW.total_fines;
END IF;
END' at line 5
以下是导致错误的 CREATE TRIGGER 代码:
DELIMITER //
CREATE TRIGGER fines_trigger BEFORE INSERT ON student
FOR EACH ROW
BEGIN
IF TUPLE.fines_remaining > TUPLE.total_fines
SET NEW.fines_remaining = NEW.total_fines;
END IF;
END; //
DELIMITER ;
我不明白为什么会这样,我觉得语法没问题,但显然不是,因为会抛出一些错误。
编辑:发布此消息后,我立即注意到在我弄清楚 'OLD' 和 'NEW' 之前我仍然使用这些 TUPLE 'variables'。我正在更改它们并会立即更新。
您在 if 条件
之后缺少then
DELIMITER //
CREATE TRIGGER fines_trigger BEFORE INSERT ON student
FOR EACH ROW
BEGIN
IF new.fines_remaining > old.total_fines then
SET NEW.fines_remaining = NEW.total_fines;
END IF;
END; //
DELIMITER ;
另外TUPLE
我在上面的触发器里改了new和old,你可能需要根据自己的需要调整逻辑。