Ошибка функции повышения 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
Другие вопросы по тегам