MAKALAH
SESI#11
Trigger
Dosen Pengampu
Disusun Oleh :
Nama : Reza Fahmi Alkhamdani 24781053
Tanggal Penyerahan
25 Mei 2026
JURUSAN
TEKNOLOGI INFORMASI
PROGRAM STUDI
MANAJEMEN INFORMATIKA
POLITEKNIK NEGERI
LAMPUNG
2026
KATA PENGANTAR
Puji
syukur penulis panjatkan ke hadirat Tuhan Yang Maha Esa atas segala rahmat dan
karunia-Nya sehingga makalah yang berjudul "Implementasi Database Trigger
pada SQL Server: Migrasi, Audit Trail, dan Validasi Data" ini dapat
diselesaikan dengan baik.
Makalah
ini disusun sebagai bentuk pertanggungjawaban akademik atas pelaksanaan
Praktikum Pemrograman SQL 2 Sesi #11 yang membahas konsep dan implementasi
trigger pada sistem manajemen basis data, khususnya dalam konteks migrasi dari
SQLite ke SQL Server menggunakan Microsoft SQL Server Management Studio (SSMS).
Penulis
menyadari bahwa makalah ini masih jauh dari kesempurnaan. Oleh karena itu,
segala kritik dan saran yang bersifat membangun sangat diharapkan demi
perbaikan di masa mendatang. Semoga makalah ini dapat memberikan manfaat bagi
pembaca, khususnya dalam memahami penerapan database trigger untuk keperluan
audit, validasi, dan keamanan data.
Bandar Lampung, 25 Mei
2026
Penulis
BAB I
PENDAHULUAN
1.1 Latar Belakang
Dalam
dunia pengelolaan basis data modern, kebutuhan akan keamanan, konsistensi, dan
integritas data menjadi semakin krusial. Berbagai sistem informasi akademik,
keuangan, maupun industri menuntut mekanisme otomatis yang dapat memantau
setiap perubahan data secara real-time tanpa bergantung pada intervensi manual
dari pengguna atau pengembang aplikasi.
Salah
satu fitur unggulan yang dimiliki oleh sistem manajemen basis data relasional
(RDBMS) untuk menjawab kebutuhan tersebut adalah database trigger. Trigger
merupakan prosedur tersimpan yang dieksekusi secara otomatis sebagai respons
atas peristiwa manipulasi data tertentu, yaitu INSERT, UPDATE, maupun DELETE.
Dengan memanfaatkan trigger, pengembang dapat membangun sistem audit trail yang
mencatat seluruh riwayat perubahan data, menerapkan validasi bisnis yang ketat,
serta melindungi integritas referensial basis data.
Tantangan
yang kerap muncul dalam praktik nyata adalah ketika suatu sistem yang awalnya
dikembangkan menggunakan SQLite harus dimigrasikan ke platform yang lebih
tangguh seperti Microsoft SQL Server. Kedua sistem basis data ini memiliki
sintaks dan mekanisme trigger yang berbeda secara mendasar, mulai dari urutan
penulisan perintah, penggunaan tabel virtual untuk membaca nilai lama dan baru,
hingga cara membatalkan transaksi yang tidak valid.
Makalah
ini disusun untuk memaparkan secara sistematis pengalaman praktis dalam
mengimplementasikan database trigger pada SQL Server, menganalisis perbedaan
sintaksnya dengan SQLite, serta mengevaluasi hasil implementasi audit trail dan
validasi data yang telah dilakukan dalam sesi praktikum ke-11 mata kuliah
Pemrograman SQL 2.
1.2 Rumusan Masalah
Berdasarkan
latar belakang di atas, rumusan masalah dalam makalah ini adalah:
•
Apa perbedaan mendasar antara sintaks trigger pada
SQLite dan SQL Server (T-SQL)?
•
Bagaimana cara mengimplementasikan trigger untuk
keperluan audit trail (AFTER INSERT, AFTER UPDATE, AFTER DELETE) pada SQL
Server?
•
Bagaimana mekanisme validasi dan pembatalan transaksi
menggunakan trigger BEFORE pada SQLite dan padanannya di SQL Server?
•
Apa keunggulan penggunaan trigger pada SQL Server
dibandingkan pendekatan manual dalam menjaga integritas data?
1.3 Tujuan Penulisan
Tujuan
penulisan makalah ini adalah:
•
Menganalisis perbandingan struktural penggunaan
perintah trigger sewaktu melakukan migrasi basis data dari lingkungan SQLite
menuju SQL Server.
•
Mempraktikkan pembuatan database trigger untuk
mendeteksi perubahan data baru maupun data lama melalui manipulasi tabel
virtual internal SQL Server.
•
Mengembangkan aturan validasi data yang ketat guna
menolak modifikasi ilegal pada tabel menggunakan fungsi kontrol pembatalan
transaksi.
•
Merancang sistem audit trail otomatis yang mendata
seluruh rekam jejak aktivitas pengguna terhadap integritas data basis data.
BAB II
TINJAUAN PUSTAKA
2.1 Konsep Dasar Trigger
Trigger
adalah objek basis data yang berupa prosedur khusus yang terikat pada sebuah
tabel dan dipicu secara otomatis oleh sistem manajemen basis data (DBMS) ketika
terjadi operasi manipulasi data tertentu. Berbeda dengan stored procedure biasa
yang harus dipanggil secara eksplisit, trigger bekerja secara implisit sebagai
respons atas peristiwa (event) yang telah didefinisikan.
Secara
konseptual, trigger terdiri dari tiga komponen utama: (1) Event, yaitu
peristiwa pemicu berupa operasi INSERT, UPDATE, atau DELETE; (2) Condition,
yaitu kondisi opsional yang harus terpenuhi agar aksi trigger dieksekusi; dan
(3) Action, yaitu serangkaian perintah SQL yang akan dijalankan ketika trigger
aktif.
Manfaat
utama penggunaan trigger dalam pengelolaan basis data antara lain adalah
kemampuan audit otomatis yang mencatat setiap perubahan data tanpa memerlukan
modifikasi kode aplikasi, validasi bisnis tambahan di level basis data, serta
sinkronisasi antar tabel secara transparan.
2.2 Jenis-Jenis Trigger
Berdasarkan
waktu eksekusinya relatif terhadap event pemicu, trigger dibagi menjadi dua
kategori utama:
BEFORE
Trigger (Trigger Sebelum): Trigger jenis ini dieksekusi sebelum operasi data
benar-benar dilakukan pada tabel. Kegunaannya yang utama adalah untuk validasi
data, di mana trigger dapat memeriksa apakah nilai yang akan dimasukkan atau
diubah memenuhi aturan bisnis tertentu, dan jika tidak memenuhi syarat, trigger
dapat membatalkan operasi tersebut. Pada SQLite, pembatalan dilakukan dengan
fungsi RAISE(ABORT, 'pesan'), sedangkan pada SQL Server menggunakan ROLLBACK
TRANSACTION dikombinasikan dengan THROW.
AFTER
Trigger (Trigger Setelah): Trigger ini dieksekusi setelah operasi data berhasil
dilakukan. Penggunaannya yang paling umum adalah untuk keperluan audit trail,
yaitu mencatat rekam jejak perubahan data ke dalam tabel log setelah operasi
INSERT, UPDATE, atau DELETE berhasil dikerjakan.
2.3 Perbedaan Sintaks SQLite dan SQL Server
Meskipun
konsepnya serupa, implementasi trigger antara SQLite dan SQL Server (T-SQL)
memiliki sejumlah perbedaan mendasar yang perlu dipahami dalam proses migrasi
basis data, sebagaimana dirangkum dalam tabel berikut:
BAB III
PEMBAHASAN
3.1 Alat dan Bahan
Praktikum
ini dilaksanakan dengan menggunakan perangkat dan bahan sebagai berikut:
•
Perangkat keras: Laptop dengan spesifikasi yang memadai
untuk menjalankan aplikasi manajemen basis data.
•
Sistem operasi: Windows.
•
Perangkat lunak: Microsoft SQL Server Management Studio
(SSMS) sebagai antarmuka utama untuk menulis, mengeksekusi, dan mengelola skrip
T-SQL.
•
Basis data akademik yang telah disediakan sebagai objek
uji coba, meliputi tabel mahasiswa, dosen, dan tabel pendukung lainnya.
•
Panduan materi praktikum Modul 11 yang diterbitkan
melalui platform LMS Polinela.
3.2 Prosedur Kerja
Praktikum
dilaksanakan melalui serangkaian langkah kerja yang sistematis sebagai berikut:
Langkah
pertama adalah Inisialisasi Lingkungan Kerja, yaitu membuka program SQL Server
Management Studio (SSMS) dan mengaktifkan basis data akademik yang menjadi
objek uji coba. Pada tahap ini, koneksi ke server basis data dipastikan
berjalan dengan baik sebelum eksekusi skrip dimulai.
Langkah
kedua adalah Identifikasi Kendala Perintah (Debugging). Pada tahap ini, pesan
kesalahan (error messages) dari skrip trigger SQLite lama ditelaah secara
cermat untuk memetakan bagian sintaks yang tidak kompatibel dengan lingkungan
SQL Server. Ini merupakan tahap analisis perbedaan platform yang krusial.
Langkah
ketiga adalah Rekonstruksi Kode ke Standar T-SQL, yaitu menyusun ulang logika
trigger audit dan validasi data dengan memanfaatkan tabel memori inserted serta
deleted, disertai penggantian operator penyambung teks dari simbol || menjadi
tanda tambah (+) sesuai standar T-SQL.
Langkah
keempat adalah Sinkronisasi Atribut Tabel, yaitu memeriksa kesesuaian nama-nama
kolom basis data (seperti memetakan kolom idprodi dan kolom log yang valid)
guna menghindari error invalid column name saat kompilasi.
Langkah
kelima adalah Kompilasi dan Validasi Akhir, yaitu menjalankan perintah
pembuatan trigger satu per satu di lembar kerja SSMS guna memastikan seluruh
rangkaian pengaman basis data terpasang sempurna tanpa tanda merah (error).
3.3 Implementasi Trigger
Implementasi
trigger dalam praktikum ini mencakup tujuh level dengan kompleksitas yang
meningkat secara bertahap.
3.3.1 Level 1 – AFTER INSERT (Audit Data Baru)
Trigger
AFTER INSERT berfungsi untuk mencatat setiap data baru yang berhasil
ditambahkan ke tabel ke dalam tabel audit_log. Pada SQL Server, nilai data baru
yang baru saja disisipkan dapat dibaca dari tabel virtual inserted. Contoh
implementasi pada tabel mahasiswa:
CREATE TRIGGER
trg_log_insert_mhs
ON mahasiswa
AFTER INSERT
AS BEGIN
INSERT INTO audit_log (tabel, aksi, npm,
dilakukan_pada)
SELECT 'mahasiswa', 'INSERT', npm, GETDATE()
FROM inserted;
END;
Hal
yang sama juga diterapkan pada tabel dosen dan variasi dengan cara
menggabungkan (konkatenasi) beberapa kolom menggunakan operator + untuk
menghasilkan nilai audit yang lebih informatif.
3.3.2 Level 2 – AFTER UPDATE (Audit Perubahan Nilai)
Trigger
AFTER UPDATE digunakan untuk merekam nilai sebelum dan sesudah terjadi
perubahan. Nilai lama dibaca dari tabel deleted, sedangkan nilai baru dibaca
dari tabel inserted. Trigger ini diterapkan pada kolom IPK, status akademik,
dan data dosen. SQL Server menyediakan fungsi IF UPDATE(nama_kolom) yang
memungkinkan trigger hanya aktif ketika kolom tertentu yang dibidik benar-benar
mengalami perubahan, sehingga efisiensi performa basis data meningkat.
CREATE TRIGGER
trg_log_update_ipk
ON mahasiswa
AFTER UPDATE
AS BEGIN
IF UPDATE(ipk)
BEGIN
INSERT INTO audit_log (tabel, aksi, npm,
nilai_lama, nilai_baru, dilakukan_pada)
SELECT 'mahasiswa', 'UPDATE', i.npm,
CAST(d.ipk AS VARCHAR), CAST(i.ipk
AS VARCHAR), GETDATE()
FROM inserted i
JOIN deleted d ON i.npm = d.npm;
END
END;
3.3.3 Level 3 – AFTER DELETE (Snapshot Data Terhapus)
Trigger
AFTER DELETE bertugas menyimpan salinan (snapshot) data yang dihapus agar dapat
diakses kembali apabila diperlukan untuk keperluan audit atau pemulihan. Pada
trigger ini, seluruh nilai baris yang dihapus dapat dibaca dari tabel deleted
sebelum benar-benar hilang dari tabel utama.
3.3.4 Level 4 – WHEN (Trigger Kondisional)
Trigger
kondisional menambahkan logika pemilahan di dalam body trigger, sehingga aksi
audit hanya dilakukan ketika kondisi tertentu terpenuhi. Ini berbeda dengan IF
UPDATE() yang memeriksa apakah kolom tertentu diperbarui; WHEN memungkinkan
pengecekan terhadap nilai aktual data, misalnya hanya mencatat ke log jika
nilai IPK yang diperbarui turun di bawah ambang batas tertentu.
3.3.5 Level 5 – BEFORE + RAISE (Validasi Data)
Pada
SQLite, validasi dilakukan menggunakan BEFORE trigger dengan fungsi
RAISE(ABORT, 'pesan') untuk membatalkan operasi sebelum data tersimpan. Padanan
fungsionalnya di SQL Server adalah menggunakan AFTER trigger dengan perintah
ROLLBACK TRANSACTION untuk membatalkan transaksi yang sedang berjalan,
dikombinasikan dengan THROW untuk menampilkan pesan kesalahan kustom kepada
pengguna.
CREATE TRIGGER
trg_validasi_ipk
ON mahasiswa
AFTER UPDATE
AS BEGIN
IF EXISTS (SELECT 1 FROM inserted WHERE ipk
> 4.0)
BEGIN
ROLLBACK TRANSACTION;
THROW 50001, 'IPK tidak boleh melebihi
4.0', 1;
END
END;
3.3.6 Level 6 – Body Multi-Statement
Pada
level ini, trigger dirancang untuk menjalankan lebih dari satu aksi dalam satu
blok eksekusi. Misalnya, setelah terjadi INSERT data mahasiswa baru, trigger
dapat sekaligus mencatat ke audit_log, memperbarui tabel rekap jumlah mahasiswa
per program studi, dan mengirimkan notifikasi ke tabel antrian proses.
Kemampuan multi-statement ini menjadikan trigger sebagai alat orkestrasi logika
bisnis yang sangat fleksibel.
3.3.7 Level 7 – Tugas Mandiri
Pada
level mandiri, seluruh konsep yang telah dipelajari digabungkan untuk membangun
sistem trigger terpadu yang mencakup AFTER INSERT, AFTER UPDATE/DELETE, BEFORE
+ RAISE (diadaptasi ke SQL Server), serta kombinasi WHEN dengan
Multi-statement. Sistem ini mensimulasikan kondisi nyata pengelolaan basis data
akademik yang memerlukan audit trail menyeluruh dan validasi integritas data
yang ketat.
3.4 Analisis Hasil Praktikum
Berdasarkan
pelaksanaan praktikum, diperoleh beberapa temuan analitis penting yang
merupakan pelajaran berharga dalam proses migrasi dan implementasi trigger
antar platform basis data.
Pertama,
mengenai Arah Eksekusi dan Iterasi. Urutan penulisan sintaks diubah dari pola
SQLite yaitu AFTER/BEFORE [AKSI] ON [tabel] menjadi pola SQL Server yaitu ON
[tabel] AFTER [AKSI]. Selain itu, klausa FOR EACH ROW milik SQLite dihapus
karena SQL Server secara otomatis memproses seluruh baris data sekaligus
(set-based processing), yang pada banyak kasus justru lebih efisien untuk
operasi massal.
Kedua,
mengenai Peralihan Tabel Memori Virtual. Variabel OLD pada SQLite dipetakan ke
tabel virtual deleted pada SQL Server, sedangkan variabel NEW dipetakan ke
tabel virtual inserted. Untuk keperluan perbandingan nilai sebelum dan sesudah
perubahan (pada trigger AFTER UPDATE), kedua tabel ini dihubungkan menggunakan
operasi JOIN berdasarkan kunci utama tabel.
Ketiga,
mengenai Mekanisme Penolakan Transaksi. Fungsi RAISE milik SQLite tidak dikenal
di SQL Server. Padanannya adalah kombinasi dua perintah: ROLLBACK TRANSACTION
untuk membatalkan seluruh transaksi yang sedang berjalan, dan THROW untuk
menampilkan pesan peringatan kustom yang informatif kepada pengguna maupun
aplikasi klien.
Keempat,
mengenai Efisiensi Validasi Kolom. Fitur IF UPDATE(nama_kolom) yang disediakan
SQL Server terbukti mengoptimalkan beban kerja basis data, karena trigger hanya
akan diaktifkan apabila kolom yang dituju memang mengalami perubahan nilai. Ini
mencegah eksekusi trigger yang tidak perlu saat operasi UPDATE menyentuh kolom
yang tidak relevan dengan logika bisnis yang dijaga.
Rekap
hasil keseluruhan praktikum menunjukkan performa yang sangat baik, dengan skor
total 96 dari 100. Dari 22 task yang diberikan, 21 task berhasil diselesaikan
dengan status Lulus pada percobaan pertama hingga beberapa percobaan.
Satu-satunya task yang belum berhasil diselesaikan adalah Level 4 Task 3 (WHEN
pada DELETE) dengan skor 25, yang menunjukkan perlunya pemahaman lebih mendalam
tentang trigger kondisional untuk operasi DELETE.
BAB IV
PENUTUP
4.1 Kesimpulan
Berdasarkan
hasil pelaksanaan praktikum dan pembahasan yang telah diuraikan, dapat ditarik
beberapa kesimpulan sebagai berikut:
Pertama,
terdapat Ketidakcocokan Sintaks yang Mendasar. Skrip trigger yang ditulis
menggunakan sintaks SQLite tidak dapat dijalankan secara langsung di lingkungan
SQL Server (SSMS). Perbedaan utama mencakup pola urutan perintah (ON ... AFTER
vs AFTER ... ON), penghapusan klausa FOR EACH ROW, tidak dikenalnya operator
penyambung teks ||, dan perbedaan nama tabel virtual (OLD/NEW vs
deleted/inserted).
Kedua,
SQL Server menawarkan Keunggulan Fitur T-SQL yang signifikan. Kemampuan
pemrosesan massal berbasis set (set-based processing) melalui tabel virtual
inserted dan deleted memungkinkan trigger bekerja lebih efisien untuk operasi
yang melibatkan banyak baris data sekaligus. Fungsi IF UPDATE() memberikan
kontrol granular atas kondisi aktivasi trigger, sementara kombinasi ROLLBACK
TRANSACTION dan THROW menyediakan mekanisme pembatalan transaksi dan pelaporan
kesalahan yang terstruktur.
Ketiga, Trigger merupakan Komponen Vital Keamanan Basis Data. Implementasi trigger secara terpadu — mulai dari audit trail otomatis untuk INSERT/UPDATE/DELETE, trigger kondisional berbasis nilai data, hingga validasi integritas yang memblokir data tidak valid — membangun lapisan keamanan yang kokoh di level basis data, terlepas dari logika yang diterapkan di sisi aplikasi.
AFTER INSERT
(Mahasiswa)
AFTER INSERT
(Dosen)
AFTER INSERT
(Konkat NEW)
AFTER UPDATE
(ipk)
AFTER UPDATE
(Status)
AFTER UPDATE
(Dosen)
AFTER DELETE
(Mahasiswa)
AFTER DELETE
(Dosen)
AFTER DELETE
(Snapshot kombinasi)
WHEN Pada
INSERT
WHANE Pada
UPDATE
BEFORE INSERT (Validasi)
BEFORE UPDATE
(Validasi)
BEFORE DELETE
(Proteksi)
Body
Multi-Statment (INSERT)
Body
Multi-Statment (UPDATE )
Body Multi-Statment (DELETE )
Tugas Mandiri
(AFTER INSERT)
Tugas Mandiri
(AFTER UPDATE/DELETE)
Tugas Mandiri
(BEFORE + RAISE)
Tugas Mandiri
(Kombinasi WHEN + Multi-statment)

Komentar
Posting Komentar