Я создаю базу данных SQLite, в которой я хочу иметь три таблицы: Users, Books и Bought.Пользователь существует из столбцов имя пользователя, пароль, имя, улица, номер дома, почтовый индекс и страна, где имя пользователя является первичным ключом.Книги существуют в столбцах ISBN, год, название, жанр, цена, автор, издатель, сводка, количество страниц и количество товаров, где ISBN и год являются первичными ключами.И существует купленный из столбцов имя пользователя, ISBN, год, количество и время, где имя пользователя, ISBN и год являются внешними ключами.
Я хочу добавить триггер таким образом, чтобы при добавлении кортежаПокупатель SQL проверит, достаточно ли этой книги на складе, и если это так, то он изменит номер запаса этой книги в Книгах и добавит заказ к Покупке.
Я уже что-то пробовал, но все равно выдает синтаксическую ошибку в предложениях when, но я не знаю почему.Вот триггер вставки, который я сделал:
CREATE TRIGGER BoughtInStockTrigger
BEFORE INSERT ON Bought
FOR EACH ROW
WHEN (NEW.amount <= (SELECT SUM(amountinstock) FROM Books B WHERE B.ISBN = NEW.ISBN AND B.year = NEW.year))
BEGIN
UPDATE Books
SET amountinstock = amountinstock - NEW.amount
WHERE ISBN = NEW.ISBN AND year = NEW.year;
END
WHEN (NEW.amount > (SELECT SUM(amountinstock) FROM Books B WHERE B.ISBN = NEW.ISBN AND B.year = NEW.year))
BEGIN
ROLLBACK;
END;
Где я допустил синтаксическую ошибку?