Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger. ada beberapa event yang bisa kita gunakan untuk mengekseskusi triger yaitu :
- BEFORE INSERT – dijalankan ketika data di masukan ke dalam table.
- AFTER INSERT – dijalankan setelah data masuk ke dalam table.
- BEFORE UPDATE – dijalankan sebelum proses update data.
- AFTER UPDATE – dijalankan setelah proses proses update data.
- BEFORE DELETE – dijalankan sebelum proses delete data.
-
AFTER DELETE – dijalankan setelah proses delete data.
1. Buat Database beserta Tabel-tabel Pendukung
[sourcecode language=”sql”]
CREATE TABLE IF NOT EXISTS `barang` (
`kodebrg` varchar(15) NOT NULL,
`nama` varchar(15) NOT NULL,
`satauan` varchar(5) NOT NULL,
`stok` int(11) NOT NULL,
PRIMARY KEY (`kodebrg`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `beli` (
`nofaktur` varchar(15) NOT NULL,
`tgl` date NOT NULL,
`kodebrg` varchar(15) NOT NULL,
`qty` int(11) NOT NULL,
PRIMARY KEY (`nofaktur`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `jual` (
`nofaktur` varchar(15) NOT NULL,
`tgl` date NOT NULL,
`kodebrg` varchar(15) NOT NULL,
`qty` int(11) NOT NULL,
PRIMARY KEY (`nofaktur`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/sourcecode]



2. Penjelasan
– Trigger name : nama trigger (terserah isikan nama apa saja cuman buat mempermudah saat edit dsb).
– Table : dimana Trigger tersebut aktif
– Time serta Event : sudah dijelaskan diatas yaitu waktu dimana trigger dieksekusi
(jika diterjemahkan maka trigger dengan nama : TG_STOKUPDATE_JUAL akan aktif setelah tabel jual melakukan insert record)
– Definition : adalah isi trigger yang kita buat, penjelasan
[sourcecode language=”sql”]
BEGIN
UPDATE barang SET stok=stok-NEW.qty
//mengupdate tabel barang filed stok, dimana stok=stok (dikurangi)
//NEW.qty maksutnya field qty dari record baru yang di insert ditabel jual
WHERE kodebrg=NEW.kodebrg;
//dimana kodebrg nya adalah field kodebrg dari record baru yang diinsert ditabel jual
END
[/sourcecode]
– Definer : yang menggunakan trigger, root@% (maksutnya user root di semua ip) bisa juga root@localhost, atau ip yg diperbolehkan saja root@192.168.1.1 misalnya.
Setelah itu lakukan cara yang sama tambahkan trigger pada tabel beli tidak perlu takut salah karena bisa diedit juga, karena logikanya jika kita beli maka nambah stok maka cukup sedikit dirubah pada tanda matematisnya menjadi :
UPDATE barang SET stok=stok+NEW.qty
Sekarang lakukan insert di tabel jual maupun beli lewat mysql saja, perhatikan baik2 stoknya jangan salah menuliskan kode barang karena klo salah trigger tidak jalan, lihat gambar :

Maksutnya kita akan menjual barang dengan kodebrg BR001 sejumlah 3, nah setelah di eksekusi coba buka tabel barang yang tadinya barang dengan kode BR001 (Rinso) stok: 10, sekarang berkurang menjadi 7. lakukan test juga pada tabel beli maka stok akan otomatis bertambah, bagi yang ingin mencoba silahkan download file sql ujicoba tersebut disini.