Apa itu trigger?
Trigger adalah objek database (sekumpulan perintah SQL) yang otomatis dijalankan ketika ada operasi tertentu pada sebuah tabel: INSERT, UPDATE, atau DELETE.
Trigger berguna untuk otomatisasi, menjaga konsistensi data, membuat log, atau melakukan validasi.
Dalam konteks basis data, trigger adalah kode (prosedur) yang berjalan secara otomatis sebagai respons terhadap suatu peristiwa (event) pada suatu tabel, seperti operasi INSERT, UPDATE, atau DELETE data. Trigger bertujuan untuk menjaga integritas data, melakukan validasi, menjalankan logika bisnis, dan mengotomatiskan tugas-tugas tertentu tanpa campur tangan manual, sehingga meningkatkan keandalan dan efisiensi database.
Hal-hal penting tentang trigger di MySQL
-
Sintaks umum memerlukan
DELIMITERkarena ada blokBEGIN ... END. -
Ada dua jenis waktu eksekusi:
BEFOREdanAFTER.-
BEFORE→ dijalankan sebelum operasi utama; bisa mengubahNEWdan bisa membatalkan operasi (pakaiSIGNAL). -
AFTER→ dijalankan setelah operasi utama; cocok untuk operasi yang tergantung data sudah tersimpan.
-
-
Dalam trigger
FOR EACH ROW→ dijalankan per baris (bukan per statement). -
Akses nilai:
NEW.col(nilai baru pada INSERT/UPDATE),OLD.col(nilai lama pada DELETE/UPDATE). -
Trigger tidak boleh melakukan
COMMIT/ROLLBACK. -
Pastikan tabel yang meng-handle stok menggunakan engine yang support transaksi (InnoDB) bila butuh atomicity/locking.
-
Untuk membuat trigger butuh privilege
TRIGGER.
1) Stok berubah saat INSERT
penjualan/keluar barang
Contoh Trigger (AFTER INSERT):
Catatan/opsional (VALIDASI stok sebelum insert):
Kalau kamu ingin mencegah transaksi kalau stok tidak cukup, gunakan BEFORE INSERT dan SIGNAL untuk menghentikan insert:
-
BEFOREcocok untuk validasi karena bisa mencegah insert. -
FOR UPDATEdi SELECT membantu mengunci baris (butuh transaksi/engine InnoDB) untuk mengurangi race condition.
2) Stok kembali saat DELETE transaksidibatalkan/dihapus
Contoh trigger (AFTER DELETE):
Catatan:
-
OLD.qtyberisi nilai qty sebelum dihapus. -
Trigger ini akan dipanggil per baris jika ada penghapusan banyak baris.
3) Stok berubah saat UPDATE (qty berubahatau pindah barang)
UPDATE bisa kompleks karena:
-
Hanya
qtyberubah (mis. dari 2 → 5): stok harus dikurangi/ditambah selisihnya. -
id_barangberubah (barang di transaksi dipindah ke item lain): stokOLD.id_barangharus dikembalikan, lalu stokNEW.id_barangdikurangi.
Contoh trigger yang menangani kedua kasus:
Opsional (validasi sebelum update):
Gunakan BEFORE UPDATE untuk memastikan stok barang baru cukup sebelum mengganti transaksi (lalu SIGNAL bila tidak cukup).
Kesimpulan
-
Trigger = query otomatis yang jalan saat ada perubahan di tabel.
-
Berguna untuk otomatisasi, konsistensi, dan keamanan data.
-
Bisa dipakai di kasus nyata seperti stok barang, log aktivitas, validasi data.




Popular
Tags
Videos
0 komentar:
Posting Komentar