Можно ли использовать там, где заявления, как я пытаюсь прямо сейчас? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть 4 таблицы: таблица «IN SHOP», в которой есть переменная «Сколько игр в магазине», нет первичных ключей и 2 поддельных ключа «Shop», где первичный ключ - ID, и «Game», где первичный ключ. также ID. Теперь у меня есть таблица «Покупка», в которой есть первичный ключ ID и поддельные ключи «Shop ID» и «Game ID». Теперь я сделал триггер, который, как только новая ЗАКУПКА добавлялся в таблицу «PURCAHSE», уменьшал бы каждый номер игры, однако я хотел бы, чтобы он упал для одной конкретной игры в одном конкретном магазине. Сейчас у меня есть:

CREATE TRIGGER delete AFTER INSERT ON purchase
BEGIN
    UPDATE In_SHOP
    SET HMGIS= HMGIS-1
    WHERE IN_SHOP.SHOP_ID = PURCHASE.SHOP_ID
    AND IN_SHOP.GAME_ID = PURCHASE.ID_GAME
END

1 Ответ

0 голосов
/ 15 мая 2018

Вам необходимо использовать inserted представление:

CREATE TRIGGER delete AFTER INSERT ON purchase
BEGIN
    UPDATE In_SHOP
        SET HMGIS= HMGIS-1
        FROM inserted i
    WHERE IN_SHOP.SHOP_ID = i.SHOP_ID AND IN_SHOP.GAME_ID = i.ID_GAME;
END;

Вы специально спросили о предложении WHERE. Это часто пишется с использованием JOIN:

CREATE TRIGGER delete AFTER INSERT ON purchase
BEGIN
    UPDATE s
        SET HMGIS = HMGIS - 1
        FROM IN_SHOP s JOIN
             inserted i
             ON s.SHOP_ID = i.SHOP_ID AND s.GAME_ID = i.ID_GAME;
END;
...