Triggers di MySQL
Pengantar
Trigger adalah objek database dalam MySQL yang secara otomatis dijalankan sebagai respons terhadap peristiwa tertentu dalam tabel. Trigger berguna untuk menjaga integritas data, melakukan validasi, atau memperbarui data di tabel lain ketika suatu perubahan terjadi.
Jenis Trigger
MySQL mendukung beberapa jenis trigger berdasarkan waktu eksekusi:
- BEFORE INSERT – Dieksekusi sebelum data dimasukkan ke dalam tabel.
- AFTER INSERT – Dieksekusi setelah data dimasukkan ke dalam tabel.
- BEFORE UPDATE – Dieksekusi sebelum data dalam tabel diperbarui.
- AFTER UPDATE – Dieksekusi setelah data dalam tabel diperbarui.
- BEFORE DELETE – Dieksekusi sebelum data dalam tabel dihapus.
- AFTER DELETE – Dieksekusi setelah data dalam tabel dihapus.
Sintaks Dasar
Berikut adalah contoh sintaks dasar untuk membuat trigger di MySQL:
CREATE TRIGGER nama_trigger
BEFORE INSERT
ON nama_tabel
FOR EACH ROW
BEGIN
-- Aksi yang akan dijalankan
END;
Contoh Penggunaan
Contoh 1: Mencatat perubahan data ke tabel log
CREATE TRIGGER log_insert
AFTER INSERT ON pelanggan
FOR EACH ROW
BEGIN
INSERT INTO log_pelanggan (pelanggan_id, aksi, tanggal)
VALUES (NEW.id, 'INSERT', NOW());
END;
Contoh 2: Memvalidasi sebelum memasukkan data
CREATE TRIGGER cek_saldo
BEFORE INSERT ON transaksi
FOR EACH ROW
BEGIN
IF NEW.saldo < 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Saldo tidak boleh negatif';
END IF;
END;
Menghapus Trigger
Jika suatu trigger tidak lagi dibutuhkan, kita bisa menghapusnya dengan perintah berikut:
DROP TRIGGER IF EXISTS nama_trigger;
Kesimpulan
Trigger di MySQL memungkinkan otomatisasi eksekusi perintah sebagai respons terhadap perubahan data dalam tabel. Dengan menggunakan trigger, kita dapat meningkatkan efisiensi dan memastikan integritas data tetap terjaga dalam database.