【发布时间】:2021-12-18 02:15:51
【问题描述】:
我刚开始学习 MySQL 课程,在我的一项任务中,我需要在 Sqlite 中创建一个触发器,该触发器可以在名为 JordanFriend 的视图上执行更新命令。此更新还应传播到 Highschooler 表。此更新不允许评分超出 9-12 的范围。
我的触发器一直出错,不知道有什么问题。
这是我的触发器:
delimiter $$
CREATE TRIGGER `grade_update_check`
BEFORE UPDATE ON `highschooler`
FOR EACH ROW BEGIN
IF (NEW.GRADE > 12)
THEN SET NEW.GRADE = OLD.GRADE;
END IF;
IF (NEW.GRADE < 9)
THEN SET NEW.GRADE = OLD.GRADE;
END IF;
IF (SELECT COUNT(ID) FROM highschooler WHERE name = NEW.name and grade = NEW.grade) = 1
THEN SET NEW.GRADE = OLD.GRADE;
END IF;
END $$
delimiter ;
这是我在尝试创建此触发器时不断遇到的错误:
sqlite> delimiter $$
...>
...> CREATE TRIGGER `grade_update_check`
...> BEFORE UPDATE ON `highschooler`
...> FOR EACH ROW BEGIN
...> IF (NEW.GRADE > 12)
...> THEN SET NEW.GRADE = OLD.GRADE;
Error: near "delimiter": syntax error
sqlite> END IF;
Error: near "IF": syntax error
sqlite> IF (NEW.GRADE < 9)
...> THEN SET NEW.GRADE = OLD.GRADE;
Error: near "IF": syntax error
sqlite> END IF;
Error: near "IF": syntax error
sqlite> IF (SELECT COUNT(ID) FROM highschooler WHERE name = NEW.name and grade = NEW.grade) = 1
...> THEN SET NEW.GRADE = OLD.GRADE;
Error: near "IF": syntax error
sqlite> END IF;
Error: near "IF": syntax error
sqlite> END $$
...>
...> delimiter ;
Error: near "$$": syntax error
任何帮助或建议将不胜感激!
【问题讨论】: