Cara Membuat Trigger di MySQL

Hai semuanya, hari ini kita akan mempelajari trigger. Trigger merupakan sebuah script MySql yang memicu terjadinya suatu kejadian seperti INSERT, UPDATE, DELETE secara otomatis setelah syarat tertentu. Mungkin melalui pengertiannya akan membingungkan, oleh karena itu mari kita praktekkan.

Script dasar dari trigger adalah :

CREATE TRIGGER nama_trigger after kejadian(i/u/d) ON nama_tabel
 FOR EACH ROW BEGIN
 INSERT INTO nama_tabel SET
 nama_field = kejadian(new/old).nama_field
 , nama_field=kejadian(new/old).nama_field
 ON DUPLICATE KEY UPDATE nama_field=nama_field+kejadian(new/old).nama_field;
 END$$ 

Untuk memulainya, pertama kita harus membuat tablenya.

Table kesatu : beli

CREATE TABLE beli(
id_beli INT( 11 ) NOT NULL AUTO_INCREMENT ,
kd_barang VARCHAR( 5 ) DEFAULT NULL ,
nama_barang VARCHAR( 20 ) DEFAULT NULL ,
jumlah INT( 11 ) DEFAULT NULL ,
PRIMARY KEY ( id_beli )
) ENGINE = MYISAM DEFAULT CHARSET = utf8; 

Table kedua : jual

CREATE TABLE jual(
id_jual INT( 11 ) NOT NULL AUTO_INCREMENT ,
kd_pelanggan VARCHAR( 10 ) NOT NULL ,
kd_barang VARCHAR( 5 ) DEFAULT NULL ,
nama_barang VARCHAR( 20 ) DEFAULT NULL ,
jumlah INT( 11 ) DEFAULT NULL ,
PRIMARY KEY ( id_jual )
) ENGINE = MYISAM DEFAULT CHARSET = utf8;

Table ketiga : stok

CREATE  TABLE stok
(kd_barang varchar(5) NOT  NULL
, jumlah int(11) NOT NULL
, PRIMARY KEY (kd_barang)
) ENGINE = MYISAM  DEFAULT CHARSET = utf8;

Sekarang kita sudah mempunyai 3 table yang akan dieksekusi, alurnya seperti ini : Jika ada pembelian (kita membeli barang ke distributor) maka akan menambah stok barang. Jika ada penjualan (ada yang membeli barang kita) maka akan mengurangi stok barang. Bagaimana? Sudah mengerti alurnya? Jika sudah kita langsung buat triggernya.

*Note : Jangan lupa perhatikan tanda $$ (delimeter)nya. Jika lupa akan error. Delimeter akan membatasi akhir dari sebuah trigger.

trigger-mysql

1. 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 diberi nama beli_barang, dan trigger akan bekerja setelah memasukkan data kedalam table beli. Dan secara otomatis akan menambahkan stok barang kedalam table stok. Karena data pada table beli masih nol, jika kita memasukkan data ke table beli, maka tidak akan ada penjumlahan yang terjadi.

Sekarang cobalah masukkan sebuah data ke dalam table beli.

trigger-mysql

Klik Go, lalu buka table stok. Jika berhasil, barang yang sudah dimasukkan di table beli akan masuk ke dalam table stok yatu kd_barang dan jumlahnya.

trigger-mysql

Sekarang, cobalah untuk memasukkan barang lagi ke table beli. Dengan kd_barang dan nama_barang yang sama. Tetapi bedakan jumlahnya, saya contohkan jumlahnya 23. Klik go dan coba lihat table stok.

trigger-mysql

Bertambah bukan? Sekarang sudah lebih mengerti konsep dari trigger kan? Jika sudah, kita buat trigger yang selanjutnya.

2. 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 diberi nama jual_barang, dan trigger akan bekerja setelah memasukkan data kedalam table jual. Dan secara otomatis akan mengurangi stok barang dalam table stok.

Sekarang cobalah untuk memasukkan sebuah data ke dalam table jual. Kita akan mencoba memasukkan data yang telah ada di table beli (tersedia dalam stok).

trigger-mysql

Klik Go, setalah itu buka table stok.

trigger-mysql

Jumlah stok yang awalnya 53 telah berkurang karena barang telah dibeli oleh pelanggan sebanyak 10.

Nah, itulah trigger. Sangat memudahkan bukan untuk memanipulasi data bukan? Semoga bermanfaat ya dan teruslah belajar :)

6 Juli 2014

Webinar Gratis 2024


Selanjutnya Pada Bulan Maret 2024

Sabtu, 09 Maret 2024


10 Bahasa Rekomendasi Untuk Dipelajari di 2024

Python Developer, Data Science, Web Application

Kursus Python Django Web Application 2024 di DUMET School Mini Bootcamp Backend Laravel 11 Bulan Mei 2024 di DUMET School
Webinar Selanjutnya Mei 2024

Minggu, 26 Mei 2024, 09.00-13.00 WIB

(4 Jam Membuat Backend di Laravel 11)

chat