Oracle триггер для обновления поля (поле + 1 и поле -1) при вставке и удалении - PullRequest
0 голосов
/ 12 июня 2018

Мне нужно сделать триггер, чтобы при вставке или удалении сотрудника (ТАБЛИЦА РАБОТОДАТЕЛЕЙ) атрибут EMPTOTAL из таблицы SHOPS UPDATE.

Таблица EMPLOYERS имеет поле (и внешний ключ) с именем SHOP, которое ссылается на таблицу SHOPS.

Я знаю, что должно быть что-то похожее на это, но у меня нет ни одного примера, который включал бы более 1 таблицы в мои упражнения.

CREATE OR REPLACE TRIGGER UPD_EMPTOTAL BEFORE INSERT OR DELETE ON EMPLOYERS FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
UPDATE SHOPS SET EMPTOTAL=EMPTOTAL+1;
ELSIF DELETING THEN
UPDATE SHOPS SET EMPTOTAL=EMPTOTAL-1;
END IF;

END;

(я пробовал другие вещи, такие как предложение UPDATE или объявление переменной для магазина, но я не совсем уверен в этом, поэтому я просто проанализировал здесь код, в котором я больше всего уверен).

1 Ответ

0 голосов
/ 12 июня 2018

Это может быть все, что нужно, чтобы ваш триггер работал:

create or replace trigger upd_emptotal
   before insert or delete on employers
   for each row
declare
begin
   if inserting
   then
      -- Update only shop total for the shop
      -- in the employer record.
      -- :new.shop is the value being inserted in the table.

      update shops
         set emptotal = emptotal + 1
       where shop = :new.shop;
   elsif deleting
   then
      -- Update only shop total for the shop
      -- in the employer record.
      -- :old.shop is the value in the record being deleted.
      update shops
         set emptotal = emptotal - 1
       where shop = :old.shop;
   end if;

end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...