Ошибка функции повышения Python/SQLite3
У меня небольшая проблема с функцией RAISE в моем триггере. Это мой код SQLite:
CREATE TRIGGER CheckingDate
BEFORE INSERT ON MyTable
FOR EACH ROW
WHEN NEW.Start_date > NEW.End_date
BEGIN
RAISE(ABORT, 'End_date must be in the future');
END;
Start_date
а также end_date
являются SMALLDATETIME
а также Start_date
является результатом datetime('now')
,
Я запускаю его в своей программе Python 2.7 со всеми другими сценариями SQL sqlite3.complete_statement()
и это дает Syntax Error near RAISE
, Может кто-нибудь сказать мне, почему? Я старался ABORT
, ROLLBACK
, вместо ABORT
или же SELECT CASE
или же WHEN THEN
в моем триггере, но он все еще дает ошибку;
1 ответ
Решение
RAISE()
является функцией SQL, вам нужно использовать ее как часть инструкции; TRIGGER
только позволяют UPDATE
, INSERT
, DELETE
или же SELECT
заявления; использовать его в SELECT
:
CREATE TRIGGER CheckingDate
BEFORE INSERT ON MyTable
FOR EACH ROW
WHEN NEW.Start_date > NEW.End_date
BEGIN
SELECT RAISE(ABORT, 'End_date must be in the future');
END;
Это вызывает ошибку правильно:
sqlite> insert into mytable values ('2030-1-1 20:20:20', datetime('now'));
Error: End_date must be in the future