Mendapatkan id autoincrement terakhir insert table MySQL
Pada aplikasi yang menggunakan skema table master detail, untuk insert table detail kita membutuhkan id dari table master yang field idnya adalah auto increment. Pada database mysql kita bisa menggunakan fungsi last_insert_id() untukmendapatkan id terakhir.
Perhatikan skema ERD berikut ini
Implementasi ERD table master detail :
- Table Master : transaksi
mysql> create table transaksi ( -> id integer auto_increment primary key, -> tanggal date, -> idcustomer integer -> )engine=innodb;
- Table Detail : transaksi_detail
mysql> create table transaksi_detail ( id integer auto_increment primary key, idproduk integer , qty integer , harga double, transaksi_id integer , foreign key(transaksi_id) references transaksi(id) ) engine=innodb;
Berikut contoh penggunaan fungsi last_insert_id()
mysql> insert into transaksi (tanggal,idcustomer) values (current_date,1); mysql> select * from transaksi; +----+------------+------------+ | id | tanggal | idcustomer | +----+------------+------------+ | 1 | 2012-01-05 | 1 | +----+------------+------------+ mysql> select last_insert_id(); +------------------+ | last_insert_id() | +------------------+ | 1 | +------------------+ 1 row in set (0.00 sec)
Atau dalam kerangka transaction ( input ke table master dan detail ) dapat dilakukan dengan perintah seperti ini :
mysql> insert into transaksi (tanggal,idcustomer) values (current_date,1); mysql> insert into transaksi_detail (transaksi_id,idproduk,qty,harga) values (last_insert_id(),2,50,3000);
Pada contoh diatas fungsi last_insert_id() akan mengambil id terakhir untuk data transaksi, jika transaksi_detail ingin diinput datanya lebih dari satu record maka, pada aplikasi (misal PHP, Java ) fungsi last_insert_id() harus dipanggil dahulu dan disimpan ke variable, baru diinput ke transaksi_detail.
Comment by Andrey on 10 March 2012:
Pak saya mau nanya,
misalkan ada id di tabel seperti ini,
1
3
4
7
10
ketika saya berada pada detail berita dengan id 1 dengan url :
detail/1/bola-dalam-berita
selanjutnya di dalam detail berita ada tombol ‘NEXT’ dan akan langsung mencari detail berita dengan id selanjutnya yaitu nomor 3 dengan url:
detail/3/transfer-pemain,
begitu juga kalau kita klik ‘PREV’ maka akan kembali ke id 1,
Adakah fungsi mysql atau php untuk mencari id selanjutnya?
kalau seperti itu logikanya gimana pak, terimakasih sebelumnya..
Andrey.
Comment by dedi on 8 March 2018:
thanks gan, ane nyari script ini dari tadi