Saturday, April 7, 2012

Handling Error Duplicate Entry Using Ignore

purpleice517.blogspot.com
Pada saat melakukan input data di database MySQL terkadang memasukan data yang telah ada pada tabel atau biasa dikenal dengan istilah duplikasi data.

Pada sebuah tabel dengan design struktur sedemikan rupa kasus duplikasi data akan menyebabkan error yang bernama Duplicate Entry.


Pada database MySQL telah menyediakan statement query untuk menangani berbagai macam error yang terjadi ketikan proses input data.

Pada posting ini akan mengambil contoh melakukan handling /penanganan error untuk kasus Duplicate Entry menggunakan Insert Ignore.

Duplicate Entry adalah sebuah error yang terjadi karena data yang akan di inputkan pada table sudah ada.

Insert Ignore adalah sebuah statemen untuk menangani error yang terjadi saat proses Insert Data dengan cara mengabaikan proses insert data.

Berikut ini adalah cara penerapan Handling Error Duplicate Entry menggunakan Insert Ignore.

Sebagai contoh terdapat sebuah tabel bernama kelas_tingkat dengan stuktur seperti dibawah ini.
mysql> desc  kelas_tingkat;

+------------------------+------------+------+-----+---------+-------+
| Field                  | Type       | Null | Key | Default | Extra |
+------------------------+------------+------+-----+---------+-------+
| kode_event_gelombang   | char(25)   | NO   | PRI | NULL    |       |
| kode_test              | char(47)   | NO   | PRI | NULL    |       |
| nomor_identifikasi_tes | varchar(5) | YES  |     | NULL    |       |
+------------------------+------------+------+-----+---------+-------+
Struktur tabel diatas terdapat dua buah PRIMARY KEY yaitu pada field kode_event_gelombang dan kode_test, maka hal tersebut memberikan ketentuan bahwa tidak boleh ada kombinasi data yang sama pada field kode_event_gelombang dan kode_test, apabila ketentuan tersebut tidak dipenuhi maka akan menghasilkan error Duplicate Entry.

Dibawah ini adalah sebuah contoh data yang sudah terdapat pada tabel kelas_tingkat
+---------------------------+-------------------------------------------------+------------------------+
| kode_event_gelombang      | kode_test                                       | nomor_identifikasi_tes |
+---------------------------+-------------------------------------------------+------------------------+
| 0000000000000000000000001 | 00010002~00000001#99999999~00009#2011#T00000001 | ABC                    |
+---------------------------+-------------------------------------------------+------------------------+
Berikut ini adalah contoh error yang terjadi apabila memasukan kombinasi data yang sama pada field kode_event_gelombang dan kode_test di tabel kelas_tingkat
insert event_tests
set kode_event_gelombang = '0000000000000000000000001',
  kode_test =  '00010002~00000001#99999999~00009#2011#T00000001',
  nomor_identifikasi_tes = 'ABC'
ERROR 1062 (23000): Duplicate entry '0000000000000000000000001-00010002~00000001#99999999~00009#2011#T00000001' for key 'PRIMARY'
Error di atas menjelaskan bahwa kombinasi data
  • 0000000000000000000000001 dan 00010002~00000001#99999999~00009#2011#T00000001 
telah ada pada field field 
  • kode_event_gelombang dan kode_test
sehingga menampilkan error Duplicate entry.

Apabila menginginkan ketika terjadi error Duplicate Entry membuat query tidak menjadi error dan proses input data diabaikan karena kombinasi data telah ada pada tabel, maka alternatif yang bisa digunakan adalah dengan memberikan statemen Insert Ignore, seperti contoh dibawah ini.
insert ignore event_tests
set kode_event_gelombang = '0000000000000000000000001',
  kode_test =  '00010002~00000001#99999999~00009#2011#T00000001',
  nomor_identifikasi_tes = 'ABC'
Query OK, 0 rows affected (0.00 sec)

Query diatas melakukan handling/penanganan apabila terjadi error Duplicate Entry maka secara otomatis proses input data akan diabaikan.

Bagian penting pada query diatas terletakan pada bagian insert ignore, yaitu sebagai berikut.
insert ignore ...
  ...
  ...
Statemen diatas adalah bagian yang melakukan proses mengabaikan input data ketika terjadi error Duplicate Entry.

No comments:

Post a Comment