No Urut dengan Funtion dan Triger Mysql


Kali ini saya akan berbagi pengalaman bagaimana cara membuat nomor urut dengan funtion dan triger di mysql, saya menggunakan XAMPP , atau http://127.0.0.1/phpmyadmin.



    Pertama saya buat database dengan nama coba, kemudian saya buat tabel sederhana dengan nama suplier dengan struktur tabel kurang lebih seperti ini…

CREATE TABLE IF NOT EXISTS `suplier` (
 `kodesup` varchar(8) NULL,
 `namasup` varchar(20) NOT NULL,
 PRIMARY KEY (`kodesup`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Setelah tabel jadi kita masuk menu Routines > Add routine seperti pada gambar dibawah ini….


Selanjutnya kita akan dihadapakan pada tampilan seperti dibawah, ini jendela untuk membuat Procedure/Function apa sihbedanya? seinget saya waktu pelajaran dulu kalau function itu mempunyai nilai kembalian, makanya ini saya pilih function karena nanti kita inputkan sebuah parameter kemudian diolah dan memberikan nilai kembalian berupa kode…

Penjelasan :
  • Nama procedure/function yang kita buat, sangat penting soalnya nanti kalau kita akan memakai kita ketikan namanya.
  • Type, memilih apakah kita akan membuat procedure/function.
  • Parameter input (masukan) kedalam function yang kita buat, kita bisa menmabah berapapun sesuai yang kita butukan.
  • Parameter output (kembalian) setelah fungsi dieksekusi.
  • Isi koding procedure/function yang kita buat.
  • Definer seperti yang ada pada trigger yaitu akses user pengguna function nantinya. *catatan : agar fungsi/prosedur bisa dikases semua user di semua host (IP) kosongkan saja.
Oke setelah membuka dan menseting seperti yang diperlukan, selanjutnya buat kode function seperti dibawah ini…

BEGIN
DECLARE kodebaru CHAR(8);
DECLARE urut INT;

SET urut = IF(nomer IS NULL, 1, nomer + 1);
SET kodebaru = CONCAT("SP", LPAD(urut, 6, 0));

RETURN kodebaru;
END


Penjelasan :
kita deklarasikan variable kodebaru yang nanti akan di ambil sebagai nilai hasil, serta urut untuk nilai masukan yang akan ditambah 1 dari nilai terakhir yang dibaca oleh fungsi  IF(nomer IS NULL, 1, nomer + 1) maksutnya jika nilai diambil adalah NULL maka dia punya default 1, jika tidak NULL maka nilai akan +1, CONCAT(“SP”, LPAD(urut, 6, 0)) akan menggabungkan semua nilai string yang ada pada concat LPAD maksutnya memberi nilai supaya menjadi 6 digit dengan angka nol selain nilai variable urut, jadi jika nialai urut 1 maka lpad menjadikanya 6 digit 000001 tanpa merusak variabel, jika nilai 15 maka akan menjadikan 6 digit 000015 tanpa merusak variabel juga, sialhkan berkreasilah pokoknya internal function dalam mysql bejibun pokoknya kalau mau googling dan sesuaikan kebutuhan.
Setelah Function kelar kitta pasangkan trigger untuk memanggil fungsi tersebut, sebenarnya dari aplikasi (Delphi) pun bisa kita panggil function dan isi nililainya, tapi “WASTE” banget seperti itu mending bikin penomoran dari aplikasi, dan kode triggernya seperti dibawah ini…


BEGIN
DECLARE s VARCHAR(8);
DECLARE i INTEGER;

SET i = (SELECT SUBSTRING(kodesup,3,6) AS Nomer
FROM suplier ORDER BY Nomer DESC LIMIT 1);

SET s = (SELECT KODEOTOMATIS(i));

IF(NEW.kodesup IS NULL OR NEW.kodesup = '')
 THEN SET NEW.kodesup =s;
END IF;
END


Inget ya trigger taruh di Before Insert jadi fungsi akan bekerja saat sebelum data masuk, sedikit penjelasan SELECT SUBSTRING(kodesup,3,6) AS Nomer FROM suplier ORDER BY Nomer DESC LIMIT 1 berarti substring kita mengambil nilai dari char ke-3 sepanjang 6 char macem fungsi copy di delphi nih order by nomer desc limit 1 adalah mendapatkan nilai dari record paling akhir jadi kita dapatkan nilai terbesar.

 
Setelah Function dan Trigger terpasang saatnya test kita insertkan data dari phpmyadmin seperti tampak pada gambar diatas, kodesup kosongkan saja karena akan terisi otomatis oleh Function yang kita buat tadi, maka hasil insert data akan terlihat seperti gamabar dibawah, terlihat kodesup tergenerate otomatis..

 

Sekian dulu tutorial kali ini semoga bermanfaat.

Comments

Popular posts from this blog

INSTALL SQL SERVER 2000 SP4 WINDOWS 10 SIMDA BMD KAB.TANGERANG

SISTEM INFORMASI KEPEGAWAIAN (SIMPEG) DENGAN CODEIGNITER 3

SISTEM INFORMASI DAFTAR USULAN PENETAPAN ANGKA KREDIT ( DUPAK ) KAB.TANGERANG BANTEN DENGAN PHPMYSQL

SISTEM IMFORMASI INSIDEN DAN PELAYANAN KESEHATAN KAB.TANGERANG BANTEN

SISTEM INFORMASI PUSKESMAS PHP PDO MYSQL

Aplikasi Banjir Dinas Kesehatan Kab. Tangerang Dengan AJAX dan PHPMYSQL

Install Laravel 5.4 di Windows 10 dengan Composer dan GIT

Konsep Jaringan Komputer

Tutorial SQL ( Structured Query Language ) part 4