Trigger dapat didefinisikan sebagai himpunan kode yang akan dieksekusi secara otomatis sebagai respon atas suatu kejadian (event).
Kejadian (event) yang bisa membangkitkan TRIGGER umumnya berupa pernyataan INSERT, DELETE, UPDATE
Dari sisi perilaku umumnya TRIGGER dibedakan menjadi 2 jenis, yaitu BEFORE dan AFTER
Cara menulis TRIGGER :
DELIMITER $$ CREATE TRIGGER nama_trigger {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON nama_tabel FOR EACH ROW BEGIN kode_sql END$$ DELIMITER;
Contoh implementasi penulisan TRIGGER
mysql> DELIMITER $$ mysql> CREATE TRIGGER update_barang -> BEFORE UPDATE -> ON barang -> FOR EACH ROW -> BEGIN -> INSERT INTO log_barang(id_brg, nama_brg_lama, nama_brg_baru) VALUES(OLD.id_brg, OLD.nama_brg, NEW.nama_brg); -> END$$ mysql> DELIMITER;
Catatan :
- Mysql tidak bisa melakukan trigger di saat yang sama, misal kita sudah membuat trigger AFTER INSERT maka kita tidak bisa mendefinisikan kembali trigger AFTER INSERT
- {BEFORE | AFTER} adalah waktu TRIGGER akan dijalankan, apakah sebelum atau sesudah database dimodifikasi (DML)
- {INSERT | UPDATE | DELETE} adalah perintah DML yang akan mengaktifkan TRIGGER
- ON mendefinisikan nama tabel yang akan diberi TRIGGER
- BEGIN END adalah perintah yang digunakan untuk membungkus perintah TRIGGER
- Keyword OLD digunakan untuk mengambil data kolom sebelum diubah, sedangkan keyword NEW digunakan untuk mengambil data kolom sesudah diubah
Untuk contoh saya tidak menuliskanya, teman-teman bisa melihat link referensi berikut untuk melihat implementasi dari TRIGGER
link referensi pembelajaran
