Trigger I: Konsep Dasar, Akses Modifikator (NEW & OLD), dan Audit Trail



PERTEMUAN 11

  1. 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

  2. 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 NEW dan OLD), menentukan waktu eksekusi yang tepat (BEFORE atau AFTER), serta mengotomatisasi pencatatan riwayat mutasi data dari operasi INSERT, UPDATE, maupun DELETE ke dalam tabel log secara sistematis.

  1. 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.

SQL
-- 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.

SQL
-- 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.

SQL
-- 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.

  1. 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.

SQL
-- 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).

SQL
-- [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.

  1. 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_log tanpa 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 nilai NEW pada trigger berbasis DELETE. Kendala tersebut berhasil saya atasi dengan baik setelah memahami esensi teoritis bahwa operasi hapus hanya menyisakan variabel transisi OLD. Hasilnya, seluruh pengujian trigger dari level 1 hingga level 6 dapat diselesaikan secara valid dengan perolehan skor kelulusan mutlak 100/100.

  1. 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_log pada database AKADEMIK via Sesi Aktif Nyken Sekar Ayuningtyas.

Komentar

Postingan populer dari blog ini

Menguasai Transact-SQL: Eksplorasi Variabel, Logika, dan Perulangan di SQL Server

Transaction: BEGIN, COMMIT, ROLLBACK, SAVEPOINT, Atomicity & All-or-Nothing

Konsep Dasar, Parameter IN, dan Fungsi Agregat dan Multi-Parameter, IF/ELSE, OUT, dan DML