
Trigger adalah sebuah Script MySQL Command yang memicu suatu kejadian dalam database MySQL berupa aksi insert, update dan delete setelah syarat tertentu. Lokasi penulisan Trigger adalah di dalam database yang bersangkutan, dan Trigger tidak ditempatkan di php script. Hasil penulisan dari sebuah Trigger akan menimbulkan efek manipulasi database secara otomatis sesuai dengan yang kita inginkan. Misalnya, setelah insert pada tabel_a dan kolom a1 maka akan otomatis insert pada tabel_b pada kolom b1. Begitu pula untuk aksi update dan delete. Untuk pembuatan Trigger ini saya menggunakan Appserv 2.5.10, MySQL Version 5.0.24a, browser mozilla Firefox dengan sistem operasi Windows7 Ultimate.
Trigger merupakan script MySQL Command yang terdiri dari 3 pokok dasar yaitu, insert, update dan delete. Adapun langkah-langkah membuat Trigger adalah :
1. Buat database dulu dengan script : create databaset ‘tes’;
2. Buat tabel beli :
1
2
3
4
5
6
7
8
9
| CREATE TABLE beli (id_beli int(11) NOT NULL AUTO_INCREMENT , kd_barang varchar(10) default NULL , satuan double default NULL , jumlah int(11) default NULL , total double default NULL , status varchar(30) default NULL , PRIMARY KEY (id_beli) ) ENGINE = MYISAM DEFAULT CHARSET = utf8; |
3. Buat tabel Jual :
1
2
3
4
5
6
7
8
9
10
| CREATE TABLE jual (id_jual int(11) NOT NULL AUTO_INCREMENT , kd_client varchar(10) NOT NULL , kd_barang varchar(10) default NULL , satuan int(5) default NULL , jumlah double default NULL , total double default NULL , status varbinary(25) default NULL , PRIMARY KEY (id_jual) ) ENGINE = MYISAM DEFAULT CHARSET = utf8; |
4. Buat tabel stok :
1
2
3
4
5
| CREATE TABLE stok (kd_barang varchar(5) NOT NULL , jumlah int(11) NOT NULL , PRIMARY KEY (kd_barang) ) ENGINE = MYISAM DEFAULT CHARSET = utf8; |
Perhatikan tanda $$ tersebut harus dikonfigurasikan seperti gambar berikut :

Artinya, anda harus menambahkan tanda $$ karena itu merupakan delimiter yang membatasi akhir dari sebuah Trigger
1. Membuat Trigger beli_barang
1
2
3
4
5
6
7
| CREATE TRIGGER beli_barang after INSERT ON beli FOR EACH ROW BEGIN INSERT INTO stok SET kd_barang = NEW.kd_barang , jumlah=New.jumlah ON DUPLICATE KEY UPDATE jumlah=jumlah+New.jumlah; END$$ |
On Duplicate Key Update artinya : jika ada insert data di tabel beli dengan kode barang (kd_barang) yang sama, maka akan otomatis menambah jumlah nya di tabel stok dengan kd_barang yang dimaksud. Akan saya jelaskan lebih rinci dengan gambar :

2. Membuat Trigger jual_barang
1
2
3
4
5
6
7
| CREATE TRIGGER jual_barang after INSERT ON jual FOR EACH ROW BEGIN UPDATE stok SET jumlah = jumlah - NEW.jumlah WHERE kd_barang = NEW.kd_barang; END$$ |
Kesimpulannya, salah satu manfaat Trigger adalah membantu administrasi database dengan teknik memanipulasi data sesuai dengan yang dibutuhkan.
Sumber : setyawan88.wordpress.com