Replikasi Data dengan Oracle Updatable materialized views & Trigger

25 Sep

Replikasi Data dengan Oracle Updatable materialized views & Trigger


Setelah mengikuti catatan di :

Replikasi data dengan oracle updatable materialized views  1

Replikasi data dengan oracle updatable materialized views  2

Replikasi data dengan oracle updatable materialized views  3

Replikasi data dengan oracle updatable materialized views  4

bagaimana Replikasi Data dengan Oracle Updatable materialized views menggunakan Trigger, karena dng menggunakan trigger codding jadi lebih
simple dan praktis, tapi jika  bandwidth master site – MV site, kecil maka update tabel sebagai akibat trigger akan lambat ter-update informasinya.

——————————————————————————–
— 1. PENAMBAHAN TRIGGER T_DBELI hanya di MASTER SITE
——————————————————————————-
IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
— hanya mengijinkan di trigger dijalankan dari Master Site
ELSE

END IF;

——————————————————————————
— 2. PENAMBAHAN TRIGGER T_DBELI hanya di MASTER SITE
——————————————————————————

CREATE OR REPLACE TRIGGER update_stock
after insert OR delete on t_dbeli
for each row
declare
mNO_FAKTUR      t_dbeli.no_faktur%TYPE;
mBRUTO          t_dbeli.bruto%TYPE;
mJUMLAH         t_dbeli.jumlah%TYPE;
mTOTAL_BRUTO    t_beli.total_bruto%TYPE;
mTOTAL_DISKON   t_beli.total_diskon%TYPE;
mTOTAL_JUMLAH   t_beli.total_jumlah%TYPE;

begin
IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
IF INSERTING THEN
mNO_FAKTUR      := :new.NO_FAKTUR;
mBRUTO          := :new.BRUTO;
mJUMLAH         := :new.JUMLAH;

select TOTAL_BRUTO, TOTAL_DISKON, TOTAL_JUMLAH
INTO mTOTAL_BRUTO, mTOTAL_DISKON, mTOTAL_JUMLAH FROM
t_beli WHERE  NO_FAKTUR = mNO_FAKTUR;

UPDATE t_beli
SET  TOTAL_BRUTO  = TOTAL_BRUTO  + mBRUTO,
TOTAL_DISKON = TOTAL_DISKON + (mBRUTO – mJUMLAH ),
TOTAL_JUMLAH = TOTAL_JUMLAH + mJUMLAH
WHERE NO_FAKTUR = mNO_FAKTUR;
END IF;

IF DELETING THEN
mNO_FAKTUR      := :OLD.NO_FAKTUR;
mBRUTO          := :OLD.BRUTO;
mJUMLAH         := :OLD.JUMLAH;

select TOTAL_BRUTO, TOTAL_DISKON, TOTAL_JUMLAH
INTO mTOTAL_BRUTO, mTOTAL_DISKON, mTOTAL_JUMLAH FROM
t_beli WHERE  NO_FAKTUR = mNO_FAKTUR;

UPDATE t_beli
SET  TOTAL_BRUTO  = TOTAL_BRUTO  – mBRUTO,
TOTAL_DISKON = TOTAL_DISKON – (mBRUTO – mJUMLAH ),
TOTAL_JUMLAH = TOTAL_JUMLAH – mJUMLAH
WHERE NO_FAKTUR = mNO_FAKTUR;
END IF;
END IF;
end update_stock;
/

———————————————————
— 3.TEST INSERT FROM MASTER SITE
———————————————————
INSERT INTO T_BELI ( NO_FAKTUR,KODE_SUPLIER,KODE_TJEN,TGL_FAKTUR,TOTAL_BRUTO,TOTAL_DISKON,TOTAL_JUMLAH)
VALUES (‘002′,’XXX1′,’T’,SYSDATE,0,0,0);

INSERT INTO T_DBELI ( NO_FAKTUR,KODE_BARANG,HARGA,QTY,DISKON,BRUTO,JUMLAH)
VALUES (‘002′,’AAAAAAAAA8’,50000,1,0,50000,50000);

COMMIT;

SELECT * FROM T_BELI  WHERE NO_FAKTUR = ‘002’;
SELECT * FROM T_DBELI WHERE NO_FAKTUR = ‘002’;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: