Триггер для автоматического добавления записи в другую таблицу

#ios #sqlite

#iOS #sqlite

Вопрос:

У меня есть таблица:

Товары

 itemID int autoincrement
itemName text
  

Доступность элемента

 itemID       integer REFERENCES Items (itemID)
availability integer DEFAULT 0
  

Мне нужен триггер для выполнения:

Когда пользователь добавит запись в таблицу Items, триггер должен автоматически добавить запись в таблицу itemAvailability.

itemAvailability.ItemId=Items.ItemId

На данный момент я дошел до этого момента и застрял:

 CREATE TRIGGER updateItemsAvailabilityTbl AFTER INSERT ON items
BEGIN
INSERT INTO itemAvailability (itemID)
VALUES (items.itemID)
END
  

ну, у меня это не работает. пожалуйста, помогите.

Ответ №1:

В вашем операторе CREATE TRIGGER допущены две ошибки. 1. Как написано в документации

действия триггера могут обращаться к элементам вставляемой, удаляемой или обновляемой строки с использованием ссылок вида «NEW.column-name» и «OLD.column-name», где column-name — это имя столбца из таблицы, с которой связан триггер. СТАРЫЕ и НОВЫЕ ссылки могут использоваться в триггерах только для событий, для которых они релевантны, следующим образом:

ВСТАВКА НОВЫХ ссылок допустима

ОБНОВЛЕНИЕ НОВЫЕ и СТАРЫЕ ссылки действительны

УДАЛЕНИЕ допустимых СТАРЫХ ссылок

Поэтому вам следует написать new.itemID вместо items.itemID . 2. Оператор INSERT INTO должен заканчиваться точкой с запятой. Попробуйте это:

 CREATE TRIGGER updateItemsAvailabilityTbl AFTER INSERT ON items
BEGIN
INSERT INTO itemAvailability (itemID)
VALUES (new.itemID);
END