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]

Kirim email ke