当我尝试运行我的表/触发器创建脚本时,出现以下错误:
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'变量'。我正在改变它们,并会暂时更新。
答案 0 :(得分:2)
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 ;
此外,我在上面的触发器中使用new和old更改了TUPLE
,您可能需要根据需要调整逻辑。