我有3张桌子:
PolicyCoverage (POLICYCOVERAGEID,CoverageID,POLICYID,POLICYCOVERENROLLDATE)
Coverage(CoverageID,COVERAGECODE,COVERAGEMONTHLYRATE)
Policy(POLICYID,POLICYENROLLMENT_DATE,POLICYEFFECTIVE_START_DATE,POLICYMONTHLYPREMIUM)
我面临的问题是创建after after触发器。当在表coverageID
中插入PolicyCoverage
时,应该用{{1}填充表Policy
}。
我似乎无法读取插入的coverageID并将其转换为查询以获取 premium 值以更新Coverage的MonthlyPremium。
到目前为止,我的代码如下:
POLICYMONTHLYPREMIUM
答案 0 :(得分:0)
您需要将触发代码修改为以下内容。
使用变量更新策略范围。
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表中没有您的策略覆盖范围条目,则触发器将失败。您将需要为此添加一些异常处理。