TRIGGER
Yuli Purwati, M. Kom
Capaian Pembelajaran:
• Mampu memahami definisi trigger
• Mampu membuat Trigger untuk diimplementasikan pada database MySql
Outline:
• Definisi trigger
• Komponen Trigger
• Batasan Trigger
Definisi
• Trigger merupakan suatu object database yang dihubungkan dengan sebuah tabel dan
diaktivasi pada saat terjadinya event tertentu pada tabel tersebut.
• Trigger berguna untuk melakukan pengecekan nilai yang disisipkan ke dalam sebuah
tabel atau untuk melakukan perhitungan pada nilai yang dilibatkan dalam sebuah
perubahan/update data
• Trigger hanya dapat dihubungkan dengan tabel permanen. tidak bisa dihubungkan
dengan tabel temporari atau view
Komponen Trigger
• Trigger Time : Adalah waktu aktifnya trigger. Terdiri dari BEFORE atau AFTER yang
menunjukkan trigger dijalankan sebelum atau sesudah pernyataan yang diaktivasinya.
• Trigger Event : Menunjukkan jenis statement yang menggerakkan trigger. Ada tiga
kemungkinan: INSERT, UPDATE atau DELETE .
• Nama Tabel : nama tabel yang berhubungan dengan trigger
• Statement Trigger : mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya
event yang mengakibatkan sebuah trigger menjadi aktif
Trigger Event
• BEFORE INSERT : TRIGGER dijalankan sebelum record dimasukkan ke database
• AFTER INSERT : TRIGGER dijalankan sesudah record dimasukkan ke database
• BEFORE UPDATE : TRIGGER dijalankan sebelum record dirubah di database
• AFTER UPDATE : TRIGGER dijalankan sesudah record dirubah database
• BEFORE DELETE : TRIGGER dijalankan sebelum record dihapus di database
• AFTER DELETE : TRIGGER dijalankan sesudah record dihapus di database
Batasan Trigger
• Perintah DROP TABLE , TRUNCATE, dan TCL query tidak dapat digunakan sebagai event
untuk mengaktivasi trigger
• Tidak dapat memberikan 2 trigger untuk sebuah tabel yang memiliki action time dan
event yang sama.
• Kita dapat mengacu pada kolom-kolom dalam tabel yang dihubungkan dengan trigger
menggunakan alias OLD dan NEW
• OLD.col_namemengacu pada sebuah kolom yang memiliki baris, sebelum kolom tersebut
di-update atau dihapus
• NEW.col_namemengacu pada kolom dari sebuah baris baru yang akan disisipkan atau di-
update
Batasan Trigger
• Pada INSERT trigger, hanya dapat menggunakan NEW.col_name
• Pada DELETE trigger, hanya dapat menggunakan OLD.col_name
• Pada UPDATE trigger, dapat menggunakan OLD.col_name untuk mengacu pada kolom-
kolom dari sebuah baris, sebelum kolom tersebut di-update dan NEW.col_name untuk
mengacu pada kolom-kolom dari baris setelah kolom tersebut di-update.
• Tidak bisa melibatkan store procedure
Sintaks Trigger
CREATE TRIGGER <nama trigger>
DROP TRIGGER <nama trigger>
<even trigger>
ON <nama tabel>
<statement SQL>
SHOW TRIGGERS
ALTER TRIGGER <nama trigger>
<even trigger>
ON <nama tabel>
<statement SQL>
Contoh
Contoh
Contoh
Reference:
Mysql 8.0 Reference Manual
[Link]
Abdul kadir, Tuntunan Praktis Belajar Database Menggunakan MySQL, Penerbit Andi
Bunafit Nugroho, Database Relasional dengan MySQL, Penerbit Andi