P' Ipank,

tidak.... isinya adalah statement insert data ke table lain aja.



Thanks in adv.





From:
ipank Aji <[email protected]>
To:
[email protected]
Date:
01/14/2010 05:16 PM
Subject:
Re: [indo-oracle] DML Trigger (After Update on table)
Sent by:
[email protected]



 
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]






[Non-text portions of this message have been removed]

Kirim email ke