Audit log dan validasi lintas tabel bisa berjalan otomatis tanpa campur tangan aplikasi. Section ini membuat trigger bertahap, menguji urutan eksekusinya, menjadwalkan event berkala, dan membahas kapan trigger justru menjadi jebakan.
Pengenalan trigger MySQL: kode yang menyala otomatis saat INSERT, UPDATE, atau DELETE menimpa tabel, pembuatan trigger pertama dengan CREATE TRIGGER dan DELIMITER, pembuktian audit_log yang terisi tanpa perintah manual, pemeriksaan dengan SHOW TRIGGERS, penghapusan dengan DROP TRIGGER, serta alasan trigger tidak bisa dipanggil seperti stored procedure.
Buka → # Trigger BEFORE dan AFTERPerbedaan trigger BEFORE dan AFTER di MySQL: BEFORE INSERT yang mengubah NEW.nama dan NEW.harga sebelum baris tersimpan, AFTER INSERT yang mereaksi data final, urutan eksekusi kedua waktu tersebut, penolakan MySQL atas perubahan NEW di trigger AFTER, serta tabel panduan kapan memakai BEFORE untuk validasi dan AFTER untuk audit.
Buka → # Trigger INSERT, UPDATE, dan DELETEBedah trigger untuk ketiga kejadian DML di MySQL: AFTER INSERT yang membaca NEW, AFTER UPDATE yang membandingkan OLD dengan NEW sehingga harga lama dan harga baru tampil bersama di audit log, AFTER DELETE yang menyimpan baris terhapus lewat OLD, BEFORE UPDATE dengan SIGNAL untuk memblokir perubahan, aturan ketersediaan OLD dan NEW, serta beberapa trigger pada kejadian yang sama dengan FOLLOWS.
Buka → # Trigger dan Integritas DataPeran trigger dalam menjaga integritas data MySQL: validasi lintas tabel dengan query di dalam trigger yang tidak bisa dilakukan CHECK constraint, penolakan INSERT lewat SIGNAL SQLSTATE 45000 dengan ERROR 1644, audit trail berisi pengguna dan waktu lewat CURRENT_USER dan CURRENT_TIMESTAMP, pemeliharaan counter denormalisasi di tabel induk, serta alasan trigger bukan pengganti foreign key.
Buka → # Debugging TriggerTeknik men-debug trigger MySQL yang berjalan senyap: tabel debug_log khusus untuk melihat nilai OLD dan NEW di dalam trigger, pemeriksaan metadata lewat information_schema.TRIGGERS, isolasi masalah dengan DROP TRIGGER sementara, uji nyata trigger rekursif yang memicu ERROR 1442 beserta pembatalan statementnya, dan keterbatasan handler SQLSTATE dalam trigger.
Buka → # Event SchedulerPenggunaan event scheduler MySQL: memeriksa variabel event_scheduler, menyalakan scheduler dengan SET GLOBAL, membuat event berkala dengan ON SCHEDULE EVERY dan event sekali jalan dengan AT, memeriksa jadwal serta status lewat SHOW EVENTS dan information_schema.EVENTS, menonaktifkan serta menghapus event, dan kebiasaan mengembalikan nilai scheduler ke kondisi awal.
Buka → # Keterbatasan Triggers dan EventsRangkuman batasan trigger dan event MySQL yang sudah teruji: trigger tidak boleh mengembalikan result set termasuk lewat CALL procedure, trigger hanya bisa menempel pada tabel dasar bukan view, transaksi eksplisit COMMIT ditolak dengan ERROR 1422, larangan rekursi tabel yang sama, eksekusi per baris yang berimplikasi performa, serta batasan event scheduler dan panduan menjaga desain tetap sederhana.
Buka →