Триггер для автоматического добавления записи в другую таблицу - PullRequest
1 голос
/ 12 ноября 2011

У меня есть стол:

Продукты

itemID int autoincrement
itemName text

itemAvailability

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 Ответ

1 голос
/ 13 ноября 2011

В вашем операторе 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...