Data dobel pada oracle

Data dobel bisa menjadi permasalahan sendiri terutama dalam hal keakuratan data, bayangkan saja bila data transaksi terinput berulang2x.. tentu akan menghasilkan data laporan yang tidak sesuai.

hal itu tidak akan terjadi bila sebelumnya kita buatkan index dulu.

CREATE UNIQUE INDEX idx_lap ON detail_laporan
(nomor_laporan,tanggal_laporan)
LOGGING
TABLESPACE idx
NOPARALLEL

idx_lap : nama index
detail_laporan : nama tabel yang di index
nomor_laporan,tanggal_laporan : nama field yang digunakan sbg pembeda
idx : nama tablespace dimana index akan di tempatkan, bila tidak di tulis maka index akan ditempatkan pada tablespace yang sama dengan tabel.

dengan demikian ga ada nomor_laporan dan tanggal_laporan yang sama bisa masuk ke tabel.

tapi gmn kl data sudah masuk terlanjur masuk sebelum dibuatkan index?

caranya : hapus dulu data yang dobel baru dibuat indexnya

BEGIN
LOOP
DELETE FROM detail_laporan
WHERE ROWID IN (SELECT MIN (ROWID)
FROM detail_laporan_p2tl
GROUP BY nomor_laporan,tanggal_laporan
HAVING COUNT (*) > 1);
EXIT WHEN SQL%NOTFOUND;
END LOOP;
COMMIT;
END;

goodluck…

Advertisement

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 )

Connecting to %s

Follow

Get every new post delivered to your Inbox.