Trigger I: Konsep Dasar, Akses Modifikator (NEW & OLD), dan Audit Trail
PERTEMUAN 11
Trigger I: Konsep Dasar, Akses Modifikator (NEW & OLD), dan Audit Trail
Nama: Nyken Sekar Ayuningtyas
NPM: 24781020
Program Studi: Manajemen Informatika 4A
Tanggal: 26 Mei 2026
Abstrak / Pendahuluan
Pada perkuliahan Pemrograman SQL Lanjut minggu ke-11 ini, fokus kegiatan praktikum adalah memahami landasan konseptual dan implementasi praktis dari objek basis data berupa Trigger tingkat dasar. Pemrograman pada lingkungan basis data relasional sering kali menuntut pengawasan otomatisasi data dan validasi yang berjalan di latar belakang secara real-time. Melalui praktikum ini, diimplementasikan pembuatan database AKADEMIK yang dilengkapi dengan mekanisme Audit Trail (pencatatan log otomatis) untuk memantau aktivitas manipulasi data. Tujuan utama praktikum ini adalah agar mahasiswa terampil dalam merancang objek TRIGGER pada lingkungan simulator basis data, mengelola fungsionalitas variabel transisi pendukung (Mode
NEWdanOLD), menentukan waktu eksekusi yang tepat (BEFOREatauAFTER), serta mengotomatisasi pencatatan riwayat mutasi data dari operasiINSERT,UPDATE, maupunDELETEke dalam tabel log secara sistematis.
Pembahasan Inti
3.1 Trigger AFTER INSERT (Pencatatan Data Baru)
Pembuatan fungsionalitas pengawasan otomatis yang dipicu sesaat setelah baris data baru berhasil ditambahkan ke dalam tabel master. Prosedur ini menangkap nilai awal untuk disimpan di tabel log.
-- Membuat trigger untuk mencatat tahun masuk saat mahasiswa baru ditambahkan
CREATE TRIGGER trg_audit_ins_thn
AFTER INSERT ON mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO audit_log (aksi, tabel_target, ref_key, nilai_baru)
VALUES ('INSERT', 'mahasiswa', NEW.npm, NEW.thn_masuk);
END;
Analisis / Pembahasan: > Trigger trg_audit_ins_thn berhasil dideklarasikan dan dijalankan menggunakan pola waktu AFTER INSERT. Ketika ada baris data baru masuk ke tabel mahasiswa, variabel logika NEW menangkap data identitas berupa NEW.npm sebagai kunci referensi (ref_key) dan NEW.thn_masuk sebagai nilai baru, lalu memasukannya ke tabel audit_log tanpa intervensi pengguna.
3.2 Trigger AFTER UPDATE (Pemantauan Perubahan Data)
Implementasi pelacakan perubahan kolom spesifik dengan memanfaatkan kombinasi nilai historis sebelum dan sesudah proses modifikasi data berlangsung.
-- Membuat trigger untuk mencatat riwayat perubahan nilai IPK mahasiswa
CREATE TRIGGER trg_audit_upd_ipk
AFTER UPDATE ON mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO audit_log (aksi, tabel_target, ref_key, kolom, nilai_lama, nilai_baru)
VALUES ('UPDATE', 'mahasiswa', NEW.npm, 'ipk', OLD.ipk, NEW.ipk);
END;
Analisis / Pembahasan: > Pada operasi perubahan data (UPDATE), kedua variabel transisi dapat diakses sekaligus. Variabel OLD.ipk mengambil nilai indeks prestasi sebelum disunting, sementara NEW.ipk mengambil nilai terbaru setelah disunting. Mekanisme pembandingan ini sangat krusial untuk aspek akuntabilitas dan audit internal sistem akademik.
3.3 Trigger AFTER DELETE (Pengarsipan Data Terhapus)
Mekanisme pengamanan snapshot informasi penting dari sebuah baris data sesaat sebelum baris data tersebut benar-benar dihilangkan dari harddisk database.
-- Membuat trigger untuk merekam data tahun masuk mahasiswa sebelum dihapus
CREATE TRIGGER trg_audit_del_thn
AFTER DELETE ON mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO audit_log (aksi, tabel_target, ref_key, kolom, nilai_lama)
VALUES ('DELETE', 'mahasiswa', OLD.npm, 'thn_masuk', OLD.thn_masuk);
END;
Analisis / Pembahasan: > Karena operasi yang dijalankan adalah DELETE (penghapusan data), maka variabel logika NEW sudah tidak tersedia lagi di dalam sistem. Oleh karena itu, kata kunci OLD digunakan untuk membaca data terakhir (seperti OLD.npm dan OLD.thn_masuk) untuk diarsipkan ke tabel log sebelum data aslinya hilang secara permanen.
Studi Kasus / Implementasi Sederhana
4.1 Penerapan Trigger pada Tabel Dosen (Entitas Berbeda)
Memanfaatkan objek trigger dengan sasaran tabel master lain (tabel dosen) untuk memastikan standarisasi logging aktivitas akademik berjalan merata di seluruh entitas database.
-- Trigger mencatat gelar dosen baru saat operasi INSERT
CREATE TRIGGER trg_audit_gelar
AFTER INSERT ON dosen
FOR EACH ROW
BEGIN
INSERT INTO audit_log (aksi, tabel_target, ref_key, nilai_baru)
VALUES ('INSERT', 'dosen', NEW.nmdosen, NEW.gelar);
END;
4.2 Tugas Mandiri Pelacakan Multi-Kolom & Snapshot Akhir
Implementasi pembuatan struktur trigger mandiri yang berorientasi pada pencatatan perubahan gelar dosen (operasi UPDATE) serta pengamanan kode pendidikan dosen yang dihapus (operasi DELETE).
-- [Tugas Mandiri 1] Memantau perubahan gelar dosen (UPDATE)
CREATE TRIGGER trg_audit_upd_gelar
AFTER UPDATE ON dosen
FOR EACH ROW
BEGIN
INSERT INTO audit_log (aksi, tabel_target, ref_key, kolom, nilai_lama, nilai_baru)
VALUES ('UPDATE', 'dosen', NEW.nmdosen, 'gelar', OLD.gelar, NEW.gelar);
END;
-- [Tugas Mandiri 2] Mengamankan id pendidikan dosen sebelum dihapus (DELETE)
CREATE TRIGGER trg_audit_del_pddk
AFTER DELETE ON dosen
FOR EACH ROW
BEGIN
INSERT INTO audit_log (aksi, tabel_target, ref_key, kolom, nilai_lama)
VALUES ('DELETE', 'dosen', OLD.nmdosen, 'idpendidikan', OLD.idpendidikan);
END;
Analisis Studi Kasus: > Melalui implementasi seluruh skenario di atas, integrasi pemrosesan otomatis berhasil menjamin keamanan integritas data langsung pada level database engine. Penggunaan instruksi FOR EACH ROW memastikan bahwa setiap baris data yang termanipulasi akan dievaluasi secara individual, mengilustrasikan fungsi enkapsulasi logika proteksi data yang aman dan andal di sisi back-end.
Kesimpulan & Refleksi Diri
Melalui rangkaian praktikum Trigger pada pertemuan ke-11 ini, dapat ditarik konklusi fundamental bahwa pemanfaatan objek trigger memberikan tingkat keamanan dan otomatisasi pelacakan data yang sangat konsisten. Struktur database menjadi lebih mandiri karena mampu mencatat riwayat penambahan, perubahan, dan penghapusan data secara real-time ke dalam tabel
audit_logtanpa perlu menulis perintah insert log manual di sisi program aplikasi. Refleksi kendala operasional yang saya alami selama sesi praktikum ini adalah sempat terjadi kekeliruan sintaksis akibat kesalahpahaman ketersediaan variabel logika, di mana saya mencoba memanggil nilaiNEWpada trigger berbasisDELETE. Kendala tersebut berhasil saya atasi dengan baik setelah memahami esensi teoritis bahwa operasi hapus hanya menyisakan variabel transisiOLD. Hasilnya, seluruh pengujian trigger dari level 1 hingga level 6 dapat diselesaikan secara valid dengan perolehan skor kelulusan mutlak 100/100.
Daftar Pustaka
Modul Praktikum Minggu Ke-11 – Trigger I: Pemrograman SQL II, Program Studi Manajemen Informatika, Politeknik Negeri Lampung, 2026.
SQLite Organization. (2024). CREATE TRIGGER - Database Language Reference. SQLite Official Documentation.
Hasil kompilasi dan pengujian script praktikum otomatisasi
audit_logpada database AKADEMIK via Sesi Aktif Nyken Sekar Ayuningtyas.
Komentar
Posting Komentar