我收到以下错误,当我尝试在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;
错误创建该触发器:近“回退”:语法错误:
我收到以下错误,当我尝试在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;
错误创建该触发器:近“回退”:语法错误:
正如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做容易得多。
你的代码给出的错误:接近“RAISE”:语法错误: – ankushbbbr
哎呀,忘了最重要的部分... –
不应该有一个BEGIN TRANSACTION? 或者你在ROLLBACK后丢失了一个分号? –
@RamMehta没有这些工作 – ankushbbbr