Je hebt je brongegevens helemaal door elkaar gehaald in je samenvoegverklaring, vermoed ik. Je wilt alleen rekening houden met de rijen die worden ingevoegd, toch?
Ik denk dat je trigger zoiets zou moeten zijn als:
CREATE OR REPLACE TRIGGER test_tri
after INSERT
ON test1
FOR EACH ROW WHEN (NEW.col5 >= '01-MAY-16')
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
IF INSERTING
THEN
MERGE INTO test_hist hist
USING (select :new.package_id, :new.col1, :new.col2, :new.col3, :new.col4, :new.col5
from dual) t1
ON (t1.PACKAGE_ID=hist.PACKAGE_ID)
WHEN MATCHED THEN
UPDATE SET hist.col5=t1.col5
WHEN NOT MATCHED THEN
INSERT (col1, col2, col3, col4, col5)
VALUES (t1.col1, t1.col2, t1.col3, t1.col4, t1.col5);
END IF;
COMMIT;
END;
/
NB als :new.col5 een datumkolom is, verander dan:
FOR EACH ROW WHEN (NEW.col5 >= '01-MAY-16')
naar
FOR EACH ROW WHEN (NEW.col5 >= to_date('01/05/2016', 'dd/mm/yyyy'))
Jaartallen hebben 4 cijfers (ik vermoedde dat je 2016 bedoelde, en niet 1916!).