Halo,

   Saya mencoba membantu menjawab persoalan anda,

1. Misalkan table invoice dibuat berdasarkan script berikut :
Sintaks :      
create table invoice_data_trx
(
 no_invoice varchar2(100),
 tanggal_invoice date
)

2. Trigger untuk proses insert,update,delete ke table invoice_data_trx
Sintaks :
CREATE OR REPLACE TRIGGER INVOICE_DATA_TRX_T BEFORE INSERT OR UPDATE
OR DELETE ON INVOICE_DATA_TRX FOR EACH ROW
DECLARE 
v_bulan_invoice_old number:=to_number(to_char(:OLD.TANGGAL_INVOICE,'mm'));
v_tahun_invoice_old number:=to_number(to_char(:OLD.TANGGAL_INVOICE,'rrrr'));
v_bulan_invoice_new number:=to_number(to_char(:NEW.TANGGAL_INVOICE,'mm'));
v_tahun_invoice_new number:=to_number(to_char(:NEW.TANGGAL_INVOICE,'rrrr'));
v_bulan_sysdate number:=to_number(to_char(SYSDATE,'mm'));
v_tahun_sysdate number:=to_number(to_char(SYSDATE,'rrrr'));     
BEGIN

IF (to_number(to_char(:OLD.TANGGAL_INVOICE,'rrrrmmdd')) <
to_number(to_char(SYSDATE,'rrrrmm')||'06') ) then
IF to_number(v_tahun_invoice_old||v_bulan_invoice_old) <
to_number(v_tahun_sysdate||(v_bulan_sysdate-1)) then
/*pesan error dapat dimodifikasi sesuai kebutuhan */
RAISE_APPLICATION_ERROR(-20001,'Cannot insert, update or delete to
table invoice_data_trx because your data is incorrect .');
END IF;
END IF;
        
IF (to_number(to_char(:NEW.TANGGAL_INVOICE,'rrrrmmdd')) <
to_number(to_char(SYSDATE,'rrrrmm')||'06') ) then
IF to_number(v_tahun_invoice_new||v_bulan_invoice_new) <
to_number(v_tahun_sysdate||(v_bulan_sysdate-1)) then
/*pesan error dapat dimodifikasi sesuai kebutuhan */
RAISE_APPLICATION_ERROR( -20001,'Cannot insert, update or delete to
table invoice_data_trx because your data is incorrect .');
END IF;
END IF;
END;

Contoh Kasus :

Asumsi sysdate adalah tanggal 4 Juli

Isi Data Invoice_Data_TRX adalah :
--------------------------------------------
| No_Invoice | Tanggal_Invoice |
--------------------------------------------
| 11               | 8/5/2005          |
--------------------------------------------
| 12               | 5/5/2001          |
--------------------------------------------

1. Proses insert untuk bulan mei 2005 ke bawah, termasuk data2 tahun
2000,2001, 2002,2003,2004, akan gagal dengan mengeluarkan pesan
sebagai berikut :

Sintaks :
INSERT INTO INVOICE_DATA_TRX (NO_INVOICE, TANGGAL_INVOICE) 
VALUES ('1','05-JULY-2000');

Error :
ORA-20001: Cannot insert, update or delete to table invoice_data_trx
because your data is incorrect .)*
ORA-06512: at "INVOICE_DATA_TRX_T", line 17
ORA-04088: error during execution of trigger 'INVOICE_DATA_TRX_T

2. Proses delete INVOICE_DATA_TRX untuk bulan mei 2005 ke bawah,
termasuk data2 tahun 2000,2001, 2002,2003,2004, akan gagal dengan
mengeluarkan pesan sebagai berikut :

Sintaks :
delete INVOICE_DATA_TRX where NO_INVOICE=12;

Error :
ORA-20001: Cannot insert, update or delete to table invoice_data_trx
because your data is incorrect .)*
ORA-06512: at "INVOICE_DATA_TRX_T", line 17
ORA-04088: error during execution of trigger 'INVOICE_DATA_TRX_T

3. Proses update untuk data-data dimana tanggal invoice-nya, bulan mei
2005 ke bawah , termasuk data2 tahun 2000,2001, 2002,2003,2004

Sintaks : 
Update INVOICE_DATA_TRX
set TANGGAL_INVOICE='05-AUG-2000' 
where NO_INVOICE=11;

Error :
ORA-20001: Cannot insert, update or delete to table invoice_data_trx
because your data is incorrect .)*
ORA-06512: at "INVOICE_DATA_TRX_T", line 17
ORA-04088: error during execution of trigger 'INVOICE_DATA_TRX_T

Note :
)*ORA-20001: Cannot insert, update or delete to table invoice_data_trx
because your data is incorrect .<-- pesan ini didapat dapat
dimodifikasi berdasarkan remark trigger diatas

Semoga bisa membantu,   
 

On 7/4/05, Kang Oyib <[EMAIL PROTECTED]> wrote:
> dear's all,
> 
> Saya punya problem dlm membuat trigger database, saya ingin agar user
> tidak dapat insert, update dan delete data setelah melewati tanggal 5
> untuk bulan sebelumnya. misal, setelah tanggal 5 juli maka user tidak
> dapat Insert, Update atau delete transaksi bulan juni, mei dst.
> 
> Terimakasi atas solusinya....
> 
> regard's
> 
> 
> K.O


--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.blogspot.com
-----------------------------------------------

Bergabung dengan Indonesia Thin Client User Groups, 
Terminal Server, Citrix, New Moon Caneveral, di:
http://indo-thin.vze.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/indo-oracle/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Kirim email ke