--> Skip to main content

Mengurutkan auto increment setelah dihapus atau delete pada MySQL

Tutorial Relational Database Management System (RDBMS) MySQL kita kali ini akan membahas bagaimana cara mengurutkan kembali auto increment setelah dihapus atau delete, sehingga nomor atau id auto increment akan terurut dengan benar kembali.

Seringkali kita menggunakan auto increment untuk sebuah field pada database untuk melakukan penomoran otomatis, sehingga setiap inputan data baru akan mengikuti nomor terakhir.

Namun kadangkala, setiap data yang dihapus dan kemudian dilakukan penambahan data baru lagi, nomornya tetap mengikuti aturan auto increment, akan tetapi proses viewnya menjadi seakan-akan tidak beraturan.

Contoh Kasus
Misalkan kita memiliki data pada sebuah tabel Mahasiswa, seperti yang ditunjukkan oleh Gambar.1 dibawah ini :
(Gambar.1 )
Misalkan kita hapus data no.4 atas nama Olkaf Maher, data kita tinggal tiga buah dengan field no terakhir adalah "3".

Setelah itu kita memasukkan data baru lagi dan hasilnya ditunjukkan oleh Gambar.2 dibawah ini :
(Gambar.2 )


Jika kita perhatikan Gambar.2, keinginan kita adalah data baru harus diurutkan juga dengan urutan no.4, karena data no.4 sebelumnya sudah dihapus. Namun hasilnya malah diurutkan dengan no.5. Untuk itu kita perlu beberapa script sql untuk mengurutkan kembali auto increment yang sudah dihapus. Untuk lebih jelasnya, ikuti langkah-langkah dibawah ini.

Langkah-langkah mengurutkan kembali auto increment

1. Create database dengan nama angularcrud (sesuaikan dengan nama yang anda inginkan).

2. Create tabel mahasiswa seperti script sql dibawah ini :
CREATE TABLE IF NOT EXISTS `mahasiswa` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `nim` int(11) NOT NULL,
  `nama` varchar(25) NOT NULL,
  `jurusan` varchar(20) NOT NULL,
  PRIMARY KEY (`nim`),
  KEY `no` (`no`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

Pada tabel diatas kita memiliki primary key untuk field 'nim', agar field 'no' dapat diset sebagai auto increment maka field tersebut harus diset sebagai index . Hal ini disebabkan jika ada field yang diset sebagai primary key, maka field yang lain tidak dapat dibuat auto increment atau kebalikannya.

3. Isi data-data seperti script sql dibawah ini :
INSERT INTO `mahasiswa` (`no`, `nim`, `nama`, `jurusan`) VALUES
(1, 22008001, 'Alhadi', 'Teknik Informatika'),
(2, 23008002, 'Januar', 'Industri'),
(3, 32008001, 'Reza', 'Elektro'),
(4, 42008009, 'Olkaf Maher', 'Kelautan');

Sehingga kita akan memiliki ouput seperti Gambar.1 diatas. Kemudian drop data pada field nim = 42008009 seperti script sql dibawah ini :
DELETE from mahasiswa WHERE nim = 42008009;

Sehingga kita sekarang memiliki data sebanyak tiga buah seperti Gambar.3 dibawah ini :
(Gambar.3 )

4. Kemudian kita tambah (insert) data baru seperti script sql dibawah ini :
INSERT INTO `mahasiswa` (`nim`, `nama`, `jurusan`) VALUES (42008007, 'Dalvin', 'Kelautan');

Sehingga kita akan memiliki ouput seperti Gambar.2 diatas, dimana auto incrementnya kurang beraturan.

5. Mengurutkan auto increment dengan menambah script sql dibawah ini :
ALTER TABLE mahasiswa DROP no;
ALTER TABLE mahasiswa ADD  no INT( 11 ) NOT NULL AUTO_INCREMENT FIRST ,ADD KEY (no); 

Sehingga kita akan memiliki auto increment yang berurut kembali seperti Gambar.4 dibawah ini :
(Gambar.4 )

Jadi ketika kita menggunakan proses pembuatan CRUD dengan php, dimana memiliki field auto increment, pastikan langkah ke-5 dimasukkan juga pada kode PHP dalam proses pembacaan data dari database setelah proses insert data.
Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar
Tutup Komentar