iya mas awaludin kebetulan kami pakai cron job dari linux utk
menjalankan procedure yang otomatis dijalankan saat setiap jam 12
malam, 
untuk mas awaludin teriumakasih atas pencerahannya
btw klo boleh tau disebabkan karena apa constrain ditable transaksi dienabled 
sehingga bisa menghapus data ditable master?
utk
prosedure yg dijalankan setiap jam 12 malam, kebetulan memang
dikhususkan utk entry transaksi barang otomatis oleh sistem, tapi sy
cek diprocedure tidak ada script PL/SQL utk mengalter constrasin
kd_barangnya....

--- Pada Sel, 28/4/09, Awaluddin Hamid <[email protected]> menulis:

Dari: Awaluddin Hamid <[email protected]>
Topik: Re: [indo-oracle] Re: OOT:tanya penghapusan data dengan table master 
terelasi dgn tabel transaksi
Kepada: [email protected]
Tanggal: Selasa, 28 April, 2009, 10:20 PM











    
            
            


      
      Teguh Susanto wrote:

>

> tapi kasus yg terjadi data master bisa terhapus walalupun masih 

> memiliki data transaksi dan kebetulan sy cek di log penghapusan data 

> itu terhapus oleh sistem

>

>

> 



Bisa dijelaskan di sini, apa yang dimaksud dengan terhapus oleh sistem? 

Apakah tau2 terhapus begitu saja atau oleh sebuah prosedur yang sudah 

dibuat sebelumnya (misalnya via job, trigger, dsb)? Jika jawabannya yang 

pertama, bisa jadi itu adalah bug dari Oracle.



Sebenarnya ada kondisi dimana record di parent table bisa saja dihapus 

meskipun masih ada record di child table.

Case:



SQL> CREATE TABLE t_master (

  2  id NUMBER,

  3  name VARCHAR2(48) ,

  4  CONSTRAINT pk_id PRIMARY KEY (id));

Table created.



SQL> INSERT INTO t_master VALUES (1, 'satu');

1 row created.



SQL> SELECT * FROM t_master;

        ID NAME

---------- ------------ -----

         1 satu



SQL> CREATE TABLE t_child (

  2  child_name VARCHAR2(48) ,

  3  id NUMBER,

  4  CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES t_master (id));

Table created.



SQL> INSERT INTO t_child VALUES ('satu',1);

1 row created.



-- error karena child record ditemukan

SQL> DELETE FROM t_master

  2  WHERE id = 1;

DELETE FROM t_master

*

ERROR at line 1:

ORA-02292: integrity constraint (USER1.FK_ID) violated - child record found



SQL> ALTER TABLE t_child DISABLE CONSTRAINT fk_id;

Table altered.



-- tidak error karena foreign key sudah di-disable sebelumnya.

SQL> DELETE FROM t_master

  2  WHERE id = 1;

1 row deleted.



-- enable foreign key tanpa validasi record sebelumnya

SQL> ALTER TABLE t_child ENABLE NOVALIDATE CONSTRAINT fk_id;

Table altered.



SQL> SELECT * FROM t_master;

no rows selected



-- record ini gak punya parent

SQL> SELECT * FROM t_child;

CHILD_NAME                         ID

------------ --------- --------- ----------

satu                                              1



SQL> INSERT INTO t_master VALUES (2,'dua');

1 row created.



SQL> INSERT INTO t_child VALUES ('dua',2);

1 row created.



-- tes apakah foriegn key sudah enable lagi

SQL> DELETE FROM t_master

  2  WHERE id = 2;

DELETE FROM t_master

*

ERROR at line 1:

ORA-02292: integrity constraint (USER1.FK_ID) violated - child record found



SQL> SELECT * FROM t_master;

        ID NAME

---------- ------------ --------- --------- --------- ---------

         2 dua



-- ada record yang tidak mempunyai parent

SQL> SELECT * FROM t_child;

CHILD_NAME                          ID

------------ --------- --------- - ----------

satu                                               1

dua                                                2



CMIIW,

AH


 

      

    
    
        
         
        
        








        


        
        


      Nikmati chatting lebih sering di blog dan situs web. Gunakan Wizard 
Pembuat Pingbox Online. http://id.messenger.yahoo.com/pingbox/

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

Kirim email ke