Selasa, 07 Januari 2014

Membuat Trigger My SQL

      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’;
  1.  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 :



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