Ошибка схемы: Ошибка: SQLITE_ERROR: неполный ввод при добавлении триггера для проверки возврата, если дата в будущем

#sqlite

Вопрос:

Вот мой текущий код sqllite для создания базы данных:

 CREATE TABLE users(
    user_id INT,
    channel_id INT NOT NULL UNIQUE,
    PRIMARY KEY (user_id)
);

CREATE TABLE credits(
    user_id INT,
    number_of_items INT CHECK(number_of_items > 0),
    expiration DATETIME,
    PRIMARY KEY (user_id, number_of_items, expiration),
    FOREIGN KEY (user_id) REFERENCES users (user_id)
);

CREATE TABLE users_items(
    user_id INT,
    item_id INT,
    PRIMARY KEY (user_id, item_id),
    FOREIGN KEY (user_id) REFERENCES users (user_id)
);
 

а вот код для триггера, который я пытаюсь создать

 CREATE TRIGGER check_has_enough_credits_to_monitor_item
BEFORE INSERT ON users_items
BEGIN
   SELECT
     CASE
       WHEN (SELECT COUNT(*) FROM users_items WHERE user_id = NEW.user_id) >=
            (SELECT sum(number_of_items) FROM credits WHERE user_id = NEW.user_id AND expiration >= datetime('now'))
         THEN RAISE (ABORT, 'No more items allowed')
     END;
END;
 

В моей базе данных у каждого пользователя есть кредиты, которые хранятся в credits таблице. Эти кредиты позволяют вводить определенное количество предметов users_items , но также с ними связан срок действия этих кредитов. Я хочу сгенерировать триггер, который не позволит пользователю добавлять запись user_items , если у него недостаточно кредитов (срок действия которых еще не истек), но я получаю следующие ошибки на своей скрипке:

 Schema Error: Error: SQLITE_ERROR: incomplete input
Schema Error: Error: SQLITE_ERROR: cannot commit - no transaction is active