Триггеры в задачах Oracle PL / SQL - PullRequest
2 голосов
/ 05 апреля 2011

Я только что написал хранимую процедуру и хранимую функцию, которые служат для вставки новой строки в мою таблицу заказов. Обновление строки добавляет: Ordernum, OrderDate, Customer, Rep, Manufacturer, Product, Qty и SaleAmount.

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

 CREATE OR REPLACE TRIGGER UpdateSalesrep
   AFTER INSERT ON Orders
   FOR EACH ROW
   BEGIN 
      UPDATE Salesreps
      SET Sales = Sales + :NEW.Amount
      WHERE Rep = Salesrep;
End;
/

Sales - это имя столбца в таблице Salesrep. Сумма, если имя используется в хранимой процедуре. Я получаю сообщение об ошибке «Где Rep = Salesrep». Если я не включу эту строку, триггер не вернет никаких ошибок. Тем не менее, я предполагаю, что если я не смогу понять, как связать сумму продаж с одной продажей, которая сделала продажу, я буду обновлять каждую продажу (что, я уверен, они были бы вполне довольны). Любая помощь будет с благодарностью, как всегда.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011
 CREATE OR REPLACE TRIGGER UpdateSalesrep
   AFTER INSERT ON Orders
   FOR EACH ROW
   BEGIN 
      UPDATE Salesreps
      SET Sales = Sales + :NEW.Amount
      WHERE Salesrep = :NEW.Rep;
End;
/
1 голос
/ 05 апреля 2011

Кто сказал, что вы должны написать триггер? Это явно указано в качестве требования в вашем домашнем задании? Вы также можете обновить таблицу UpdateSalesRep в той же хранимой процедуре, которую вы уже написали для вставки в таблицу Orders.

Чтение: http://www.oracle.com/technetwork/issue-archive/2008/08-sep/o58asktom-101055.html

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