Обновить другой столбец после триггера вставки - PullRequest
0 голосов
/ 17 декабря 2018

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

PolicyCoverage (POLICYCOVERAGEID,CoverageID,POLICYID,POLICYCOVERENROLLDATE)

Coverage(CoverageID,COVERAGECODE,COVERAGEMONTHLYRATE)

Policy(POLICYID,POLICYENROLLMENT_DATE,POLICYEFFECTIVE_START_DATE,POLICYMONTHLYPREMIUM)

Проблема, с которой я сталкиваюсь, заключается всоздание триггера после вставки. Когда coverageID вставлен в таблицу PolicyCoverage, он должен заполнить таблицу Policy POLICYMONTHLYPREMIUM.

Мне кажется, что я не могу прочесть coverIDкоторый вставляется и преобразуется в запрос для получения значения premium для обновления MonthlyPremium при покрытии.

Мой код пока следующий:

 create trigger popmonthlyprem
after insert on policycoverage
for each row
update policy.policymonthlypremium
join on policy.policymonthlypremium = coverage.coveragemonthlyrate

1 Ответ

0 голосов
/ 17 декабря 2018

Вам нужно будет изменить код триггера на приведенный ниже.

  1. Первый выбор ежемесячного коэффициента покрытия из таблицы покрытия.
  2. Обновите покрытие политики с помощью переменной.

    create or replace trigger popmonthlyprem
    after insert on policycoverage
    for each row
    DECLARE
        v_num_cov_mon_rate NUMBER := 0; 
    BEGIN
        SELECT c.COVERAGEMONTHLYRATE
          INTO v_num_cov_mon_rate
          FROM coverage c
         WHERE c.coverageID = :NEW.coverageID;
    
        UPDATE policy p
           SET p.policymonthlypremium = v_num_cov_mon_rate
         WHERE p.POLICYID = :NEW.POLICYID
    END;
    

* ПРИМЕЧАНИЕ. - Триггер не будет выполнен, если в таблице COVERAGE нет записи для покрытия вашей политики.Вам нужно будет добавить некоторую обработку исключений для этого.

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