maaf.. sebelumnya saya ingin bertanya. Apakah didalam body trigger tersebut memanggil prosedur proc_ins_data? Karena setahu saya trigger tidak dapat memanggil procedure ataupun function. Terima Kasih.
--- On Thu, 14/1/10, Wadi Achmed <[email protected]> wrote: From: Wadi Achmed <[email protected]> Subject: Re: [indo-oracle] DML Trigger (After Update on table) To: [email protected] Date: Thursday, 14 January, 2010, 5:42 Hi Laurens, Di dalam trigger cara baca data dari table lain tidak membutuhkan :NEW atau :OLD Karena anda coba membuat validasinya secara referensi, maka di dalam trigger harus disediakan if terhadap column yang dimaksud CREATE OR REPLACE TRIGGER TG_Customer AFTER UPDATE ON Customer REFERENCING NEW AS New OLD AS Old FOR EACH ROW DECLARE l_field_nm Varchar2(10) ; Cursor Rec_Data IS SELECT column_name FROM table_A WHERE table_name = 'Customer' ; BEGIN FOR Rec IN Rec_Data LOOP l_field_nm := Rec.column_name; IF l_field_nm = 'COLUMN_A' THEN IF :NEW.COLUMN_ A <> :OLD.COLUMN_ A THEN proc_ins_data; END IF; END IF END LOOP ; END ; Mungkin akan lebih baik anda mendefinisikan triggernya dengan memberikan batasan column apa aja yang harus diperiksa dan data seperti apa yang menyebabkan trigger dieksekusi. Contohnya CREATE OR REPLACE TRIGGER TG_Customer AFTER UPDATE OF COLUMN_A, COLUMN_B ON Customer REFERENCING NEW AS New OLD AS Old FOR EACH ROW WHEN ((NEW.COLUMN_ A <> OLD.COLUMN_A) OR (NEW.COLUMN_ B <> OLD.COLUMN_B) ) DECLARE l_field_nm Varchar2(10) ; Cursor Rec_Data IS SELECT column_name FROM table_A WHERE table_name = 'Customer' ; BEGIN proc_ins_data; END ; Cheers, Wadi On Wed, Jan 13, 2010 at 6:23 PM, <laurens_kaseger@ manulife. com> wrote: > Dear all, > > Mohon bantuan sharingnya, > > Bagaimana agar :New.l_field_ nm dan :Old.l_field_ nm > dapat terbaca 'nilai'-nya. > > Contoh Trigger: > CREATE OR REPLACE TRIGGER TG_Customer > AFTER UPDATE ON Customer > REFERENCING NEW AS New OLD AS Old > FOR EACH ROW > DECLARE > l_field_nm Varchar2(10) ; > > Cursor Rec_Data IS > SELECT column_name > FROM table_A > WHERE table_name = 'Customer' ; > > BEGIN > > FOR Rec IN Rec_Data LOOP > l_field_nm := Rec.column_name ; > > IF :New.l_field_ nm <> :Old.l_field_ nm Then > -> proc ins_data > END IF > > END LOOP ; > > END ; > > > Thanks vm > Laurens > > [Non-text portions of this message have been removed] > > > > ------------ --------- --------- ------ > > -- > -----------I. N.D.O - O.R.A.C.L.E- --------- ----- > Keluar: indo-oracle- unsubscribe@ yahoogroups. com > Website: http://indooracle. wordpress. com > http://www.facebook .com/group. php?gid=51973053 515 > ------------ --------- --------- --------- -------- > > Bergabung dengan Indonesia Thin Client User Groups, > Terminal Server, Citrix, New Moon Caneveral, di: > http://indo- thin.blogspot. comYahoo! Groups Links > > > > [Non-text portions of this message have been removed] [Non-text portions of this message have been removed]

