SQLite触发器错误:回滚

时间:2017-05-04 16:37:33

标签: sql sqlite

当我尝试在SQLite中创建此触发器时,出现以下错误

create trigger timeslot_check1 after insert on section

for each row
when(new.time_slot_id not in(select time_slot_id
                            from time_slot))
begin
    rollback
end;

错误:接近“回滚”:语法错误:

1 个答案:

答案 0 :(得分:2)

documentation所示,触发器主体中允许的唯一SQL命令是UPDATE,INSERT,DELETE和SELECT。

要引发错误,您必须使用查询中的RAISE() function

CREATE TRIGGER timeslot_check1
BEFORE INSERT ON section
FOR EACH ROW
WHEN NEW.time_slot_id NOT IN (SELECT time_slot_id FROM time_slot)
BEGIN
    SELECT RAISE(FAIL, "invalid timeslot");
END;

无论如何,使用foreign key可以更轻松地完成此项检查。