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

Master Detail Table

Implementasi ERD table master detail :

  1. Table Master : transaksi
    mysql> create table transaksi (
        -> id integer auto_increment primary key,
        -> tanggal date,
        -> idcustomer integer
        -> )engine=innodb;
    
  2. 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.

There Are 3 Responses So Far. »

  1. 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.

  2. thanks gan, ane nyari script ini dari tadi

Post a Response