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.
Tidak ada komentar:
Posting Komentar