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 :
Buat database dulu dengan script : create database ‘tes’;
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;
Trigger merupakan script MySQL Command yang terdiri dari 3 pokok dasar yaitu, insert, update dan delete. Adapun langkah-langkah membuat Trigger adalah :
Buat database dulu dengan script : create database ‘tes’;
- Buat tabel beli :
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;
2. Buat tabel Jual :
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;
3.Buat tabel stok :
CREATE TABLE stok
(kd_barang varchar(5) NOT NULL
, jumlah int(11) NOT NULL
, PRIMARY KEY (kd_barang)
) ENGINE = MYISAM DEFAULT CHARSET = utf8;
Nah, anda sudah memiliki tabel beli, jual dan stok. Skenarionya adalah jika ada pembelian, akan otomatis menambah stok barang, dan jika ada penjualan akan mengurangi stok barang secara otomatis.
Perhatikan tanda $$ tersebut harus dikonfigurasikan seperti gambar berikut :
Artinya, anda harus menambahkan tanda $$ karena itu merupakan delimiter yang membatasi akhir dari sebuah Trigger
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;
3.Buat tabel stok :
CREATE TABLE stok
(kd_barang varchar(5) NOT NULL
, jumlah int(11) NOT NULL
, PRIMARY KEY (kd_barang)
) ENGINE = MYISAM DEFAULT CHARSET = utf8;
Nah, anda sudah memiliki tabel beli, jual dan stok. Skenarionya adalah jika ada pembelian, akan otomatis menambah stok barang, dan jika ada penjualan akan mengurangi stok barang secara otomatis.
Perhatikan tanda $$ tersebut harus dikonfigurasikan seperti gambar berikut :
Penulisan Trigger
Artinya, anda harus menambahkan tanda $$ karena itu merupakan delimiter yang membatasi akhir dari sebuah Trigger
- Membuat Trigger beli_barang
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$$
Keterangan : Trigger dibuat dengan nama ‘beli_barang’ dan bekerja setelah insert data pada tabel beli, maka akan insert juga pada tabel stok dengan mengisi field pada tabel stok berupa kd_barang dan jumlah sama persis yang di insert di tabel beli. Dan Metode updatenya adalah jumlah yang ada ditambah dengan jumlah baru yang di insert kan di tabel beli. Jika awal insert otomatis tidak ada penjumlahan, karena logika nya jumlah barang yang ada di tabel stok adalah nol.
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 di jelaskan lebih rinci dengan gambar :
Isi Tabel Yang diberi Trigger
Membuat Trigger jual_barang
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$$
Keterangan : Trigger dibuat dengan nama ‘jual_barang’ setelah insert pada tabel jual maka pada setiap barisnya akan di update dimana kode barang (kd_barang) nya sama dengan yang ada di tabel stok (stok). Hasilnya adalah jika ada penjualan barang pada tabel jual (jual), maka akan otomatis mengurai jumlah barang pada stok (stok), dimana kode barang yang dimaksud (kd_barang) sama dengan yang diisi di tabel jual (jual).
Kesimpulannya, salah satu manfaat Trigger adalah membantu administrasi database dengan teknik memanipulasi data sesuai dengan yang dibutuhkan.
Sumber : http://setyawan88.wordpress.com/2010/04/07/create-trigger-mysql/
Tidak ada komentar:
Posting Komentar