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.

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.

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.

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.

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).

Klik Go, setalah itu buka table stok.

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 :)
Webinar Gratis 2024
Sabtu, 09 Maret 2024
10 Bahasa Rekomendasi Untuk Dipelajari di 2024
Python Developer, Data Science, Web Application
Minggu, 26 Mei 2024, 09.00-13.00 WIB
(4 Jam Membuat Backend di Laravel 11)