【发布时间】:2021-12-18 09:00:17
【问题描述】:
我刚开始学习 SQLite 课程,我的一项任务希望我为 SQLite 数据库创建触发器。我知道 MySQL 中的某些函数不能像 IF 语句一样在 SQLite 上运行。谁能帮我把这个 MySQL 触发器代码转换为在 SQLite 上工作?
这是 MySQL 中的触发代码:(此代码已经过测试,可与 MySQL 中的同一数据库一起使用)
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
这是我为同一个触发器转换的 SQLite 代码:
CREATE TRIGGER 'grade_update_check' BEFORE UPDATE ON 'Highschooler'
BEGIN
SELECT CASE
WHEN (SELECT grade FROM Highschooler WHERE NEW.GRADE > 12) THEN SET NEW.GRADE = OLD.GRADE;
WHEN (SELECT grade FROM Highschooler WHERE NEW.GRADE < 9) THEN SET NEW.GRADE = OLD.GRADE;
WHEN ((SELECT COUNT(ID) FROM highschooler WHERE name = NEW.name and grade = NEW.grade) = 1) THEN SET NEW.GRADE = OLD.GRADE;
END;
END;
当我尝试执行它时,它会抛出 Error: near "SET": syntax error 的错误。
任何帮助或建议都非常感谢!
【问题讨论】: