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…
Filed under: Oracle Script