Cara menggunakan contoh kasus trigger mysql

06/07/2014    Aulia Rahmah Alhafidz    81316    Website

Table of Contents

  • Pendahuluan
  • Pembuatan Trigger
  • Contoh Penggunaan Trigger
  • Apa itu trigger di MySQL?
  • Apa itu trigger pada SQL?
  • Apa peristiwa yang menyebabkan trigger dilakukan?
  • Apa perbedaan antara before dan after pada trigger?

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 :]

No data.

Halo temen-temen pejuang ilmu, apa kabar? Kali ini kita akan belajar bersama materi lawas yang punya banyak magic sekaligus masih sangat bermanfaat, salah satunya ialah Trigger pada SQL, dan kita akan belajar dengan database sejuta umat yaitu MySQL / MariaDB.

Pendahuluan

Trigger adalah suatu objek database yang merupakan aksi atau prosedur yang terjadi jika terjadi perubahan pada suatu row. Trigger tidak dapat menjadi bagian dari suatu temporary table atau suatu view. Intinya script SQL yang memicu terjadinya suatu kejadian seperti INSERT, UPDATE, DELETE secara otomatis setelah kejadian tertentu.

Mungkin melalui pengertiannya akan sedikit membingungkan, maka dari itu mari kita langsung praktekkan.

Pembuatan Trigger

Berikut adalah syntax lengkap cara membuat trigger di MySQL :

CREATE
    [DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_body

// Keterangan :

  • trigger_name : nama trigger.
  • trigger_time : kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.
  • trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event tersebut adalah INSERTUPDATEDELETE.
  • tbl_name : nama table.
  • trigger_body : statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu maka gunakan dalam blok statement BEGIN … END.
  • Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu [dalam format penulisan [email protected]]. Jika tidak dispesifikasikan, maka user yang melakukan perubahan [CURRENT_USER] adalah pilihan default.

// Referensi “OLD” dan “NEW”

Karena trigger digunakan pada saat terjadi perubahan row data, maka kita perlu referensi ke row sebelum dan sesudah perubahan. Untuk ini ada dua alias yang berfungsi untuk hal tersebut yaitu OLD dan NEW.

Sesuai namanya, OLD digunakan untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan.

Contoh Penggunaan Trigger

Disini saya punya tabel p_item dan tabel t_sale_detail seperti ini :

table t_sale_detail before

table p_item before

Kita bisa menggunakan trigger untuk kasus jika data di tabel t_sale_detail bertambah, maka field stock di tabel p_item yang memiliki item_id yang sama, akan berkurang otomatis sesuai qty yang ada di tabel t_sale_detail. Begitupun sebaliknya, yang akan kita langsung praktekkan dibawah.

Kita buat contoh trigger untuk event setelah penghapusan [AFTER DELETE] pada tabel t_sale_detail, jadi ketika delete data di tabel t_sale_detail maka field stock yang ada di tabel p_item dengan item_id yang sama akan bertambah sesuai qty di tabel t_sale_detail. Kurang lebih seperti ini script SQL-nya :

 DELIMITER
 |
 CREATE TRIGGER stock_del AFTER DELETE
 ON t_sale_detail FOR EACH ROW
 BEGIN
     UPDATE p_item SET stock = stock + OLD.qty
     WHERE item_id = OLD.item_id;
 END
 |
 DELIMITER;

Okay, sudah ter-create sempurna triggernya.

trigger stock_del in table t_sale_detail

Sekarang tinggal kita lihat hasilnya. Kita ingat-ingat dulu data-data pada 2 tabel diatas terutama bagian stock, kalo lupa temen2 bisa scroll-up dikit.

Kita coba hapus data di tabel t_sale_detail dengan sale_id = 16 [detail_id = 27 & 28], dan lihat stock pada tabel p_item akan bertambah sesuai qty pada tabel t_sale_detail yang dihapus.

table t_sale_detail after

table p_item after

Wow, it works! Magic kan? Selain fitur-fitur bermanfaat yang sudah umum seperti DDL, DML, Join, ternyata SQL juga menyimpan banyak fungsi menarik lainnya seperti Procedure, Function, View, dan lain sebagainya yang menarik untuk kita coba.

Selamat belajar dan praktek para pejuang! Semoga bermanfaat 🙂

Referensi :
//dev.mysql.com/doc/refman/8.0/en/triggers.html

Apa itu trigger di MySQL?

Trigger dalam database adalah kode prosedural yang secara otomatis dijalankan untuk menanggapi perubahan tertentu pada table tertentu atau tampilan dalam database. Trigger dapat didefinisikan untuk menjalankan penrintah sebelum atau setelah eksekusi DML [Data Manipulation Language] seperti INSERT, UPDATE, dan DELETE.

Apa itu trigger pada SQL?

Trigger dapat didefinisikan sebagai himpunan kode [prosedural] yang dieksekusi secara otomatis sebagai respon atas suatu kejadian berkaitan dengan tabel basis data. Kejadian [event] yang dapat membangkitkan trigger umumnya berupa pernyataan INSERT, UPDATE, dan DELETE.

Apa peristiwa yang menyebabkan trigger dilakukan?

trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan.

Apa perbedaan antara before dan after pada trigger?

Before Trigger adalah jenis pemicu yang secara otomatis dieksekusi sebelum operasi tertentu terjadi di atas meja. Sebaliknya, setelah pemicu adalah jenis pemicu yang secara otomatis dieksekusi setelah operasi tertentu terjadi di atas meja.

Apa itu trigger di MySQL?

Trigger dalam database adalah kode prosedural yang secara otomatis dijalankan untuk menanggapi perubahan tertentu pada table tertentu atau tampilan dalam database. Trigger dapat didefinisikan untuk menjalankan penrintah sebelum atau setelah eksekusi DML [Data Manipulation Language] seperti INSERT, UPDATE, dan DELETE.

Apa peristiwa yang menyebabkan trigger dilakukan?

trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan.

Jelaskan apa yang dimaksud dengan trigger dalam database?

Trigger dapat didefinisikan sebagai himpunan kode [prosedural] yang dieksekusi secara otomatis sebagai respon atas suatu kejadian berkaitan dengan tabel basis data. Kejadian [event] yang dapat membangkitkan trigger umumnya berupa pernyataan INSERT, UPDATE, dan DELETE.

Bagaimana cara menghapus trigger?

Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER dengan diikuti dengan nama tabel dan nama triggernya.

Bài mới nhất

Chủ Đề