आपको अपना स्रोत डेटा मिला है जो आपके मर्ज स्टेटमेंट में मिला हुआ है, मुझे संदेह है। आप केवल पंक्तियों को सम्मिलित करने पर विचार करना चाहते हैं, है ना?
मुझे लगता है कि आपका ट्रिगर कुछ इस तरह होना चाहिए:
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;
/
एन.बी. अगर :new.col5 एक तिथि कॉलम है, तो बदलें:
FOR EACH ROW WHEN (NEW.col5 >= '01-MAY-16')
करने के लिए
FOR EACH ROW WHEN (NEW.col5 >= to_date('01/05/2016', 'dd/mm/yyyy'))
वर्षों में 4 अंक होते हैं (मैंने अनुमान लगाया है कि आपका मतलब 2016 था, न कि 1916!)।