Anda di halaman 1dari 5

Membuat Trigger di MySQL Dengan Contoh Kasus Mengurangi

Stok

Hallloooo masbro dan mbakbro penggemar setia blogku, maaf beribu maaf sudah lama ga bisa share
bukan karena kehabisan artikel tapi ada project yang deadline hampir habis (jaelah malah curhat), oke
kali ini saya mau berbagi mengenai trigger di MySQL masbro, sebenarnya saya juga masih sedikit paham
saja sih hasil ujicoba sendiri dari googling, tapi tidak ada salahnya berbagi.

Apa itu TRIGGER?? silahkan googling pasti bnyak sekali penjelasanya, saya coba mengartikan menurut
saya pribadi. trigger adalah bahasa Inggris dalam bahasa Indonesia nya adalah pemicu nah apa yang
dipicu tentu saja adalah sebuah fungsi atau prosedur yang dikerjakan oleh database, jadi di dalam koding
pembuatan program tentusaja akan menguntungkan kita karena beberapa code yang biasanya lewat
program jadi terpangkas.

Bagaimana menjalankan TRIGGER?? tentu saja akan banyak menemukan artikel juga kalau kita
googling, mungkin semua database juga memiliki aturan yang sama soal trigger tidak tahu juga kalau ada
yang lain. ada 6 Event untuk mengaktifkan/dimana trigger dipasang yaitu :
1. AFTER/BEFORE INSERT ( trigger aktif setelah/sebelum record baru diinsert)
2. AFTER/BEFORE UPDATE ( trigger aktif setelah/sebelum record diupdate)
3. AFTER/BEFORE DELETE ( trigger aktif setelah/sebelum record dihapus)
Soal penggunaan logika dan algoritma trigger sebenarnya sama saja, cuman saya sendiri tidak terbiasa
dengan bahasa trigger jadi ya agak kesulitan memainkan fungsi yang agak kompleks, oke langsung saja
saya akan memberikan contoh yang sangat simple yaitu menambah dan mengurangkan stok, anggap
saja ini sistem persediaan, kita akan bermain didatabase saja contoh menggunakan XAMPP ver 1.8.1
kalau ada perbedaan harap menyesuaikan ya :D

pertama-tama kita buat dulu database sederhana kita beri nama : Inventory, atau terserah apalah bagi
yang belum bisa buat databasae.
oke selanjutnya kita buat tabel-tabelnya yaitu barang, jual, dan beli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

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;

perhatikan struktur tabel agar trigger bisa di eksekusi!! pakek analogi sederhana kita akan mengurangi
stok dari tabel barang kita lock PK(Primary Key)-nya dalam kasus ini kodebrg ini kita jadikan senjata
ditabel lain untuk memicu trigger nantinya, atau bahasa mudahnya tabel yang akan dipasang
triggerharus memiliki field tabel yang akan di kenakan trigger.

jika sudah jadi masukan beberapa data barang lewat menu Insert, saya coba seperti tampak pada
gambar dibawah ini

selanjutnya coba kita pasang Trigger di tabel jual, kita gunakan fasilitas yang sudah ada saja perhatikan
gambar

maka akan tampak tampilan jendela trigger seperti gambar dibawah :

Penjelasanya :
Trigger name : nama trigger (terserah isikan nama apa saja cuman buat mempermudah saat edit dsb).
Table :

Time

serta

dimana

Event :

sudah

Trigger

dijelaskan

diatas

yaitu

tersebut
waktu

dimana

trigger

aktif
dieksekusi

(jika diterjemahkan maka trigger dengan nama : TG_STOKUPDATE_JUAL akan aktif setelah tabel jual
melakukan

insert

Definition :

adalah

isi

trigger

record)
yang

kita

buat,

penjelasan

1BEGIN
2 UPDATE barang SET stok=stok-NEW.qty
//mengupdate tabel barang filed stok, dimana stok=stok (dikurangi)
3
4 //NEW.qty maksutnya field qty dari record baru yang di insert ditabel jual
kodebrg=NEW.kodebrg;
5 WHERE
//dimana kodebrg nya adalah field kodebrg dari record baru yang diinsert
6ditabel jual
7END

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

UPDATE

barang

menjadi

SET

stok=stok+NEW.qty

Oke sekarang coba 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

Anda mungkin juga menyukai