I need to create a set of child values (empty records) when a master is created. They are pay rate variations dependent on three variables. Is the following trigger logic using nested loops correct?
CREATE OR REPLACE TRIGGER "BI_LOAD_RATES"
before insert on "LOAD_RATES"
for each row
--variable declarations
actv INTEGER;
actv_dt DATE;
end_dt DATE;
rt_id NUMBER;
shft VARCHAR2(2);
prem VARCHAR2(2);
lvl INTEGER;
cursor c_shft is SELECT 'D' from DUAL UNION SELECT 'N' FROM DUAL;
cursor c_prem is SELECT 'B' from DUAL UNION SELECT 'P' FROM DUAL;
begin
if :NEW."LOAD_RATE_ID" is null then
select "SEQ_LOAD_RATE_ID".nextval into rt_id from dual;
:NEW."LOAD_RATE_ID" := rt_id;
end if;
actv := :NEW.ACTIVE;
actv_dt := :NEW.EFFECTIVE_DATE;
end_dt := :NEW.END_DATE
for shft in c_shft loop
for prem in c_prem loop
FOR lvl in 1..4 LOOP
INSERT INTO LOAD_PAY(ID, LOAD_RATE_ID, PAY_AMT, EXP_LVL, SHIFT, PREMIUM, ACTIVE, ACTIVE_DT, END_DT)
VALUES (SEQ_LOAD_PAY.nextval, rt_id, 0, lvl, shft, prem, actv, SYSDATE, actv_dt, end_dt);
END LOOP;
end loop;
end loop;
end;
/