我收到以下錯誤,當我嘗試在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