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, <[email protected]> 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: [email protected]
> Website: http://indooracle.wordpress.com
> http://www.facebook.com/group.php?gid=51973053515
> -----------------------------------------------
>
> 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]