Pengenalan Trigger dalam Basis Data Relasional
1. Latar Belakang
Perkembangan
sistem basis data relasional memungkinkan data disimpan dalam beberapa
tabel yang saling berhubungan untuk menghindari redundansi dan menjaga
integritas informasi. Dalam praktiknya, data yang dibutuhkan sering kali
tersebar di lebih dari satu tabel, sehingga diperlukan mekanisme untuk
menggabungkan data tersebut agar dapat menghasilkan informasi yang utuh
dan bermakna. Salah satu konsep penting dalam SQL yang digunakan untuk
tujuan tersebut adalah JOIN, yaitu perintah yang berfungsi untuk
menghubungkan dua atau lebih tabel berdasarkan relasi tertentu.
Pemahaman
mengenai konsep dan implementasi JOIN menjadi sangat penting dalam
proses pengolahan data, terutama ketika menangani basis data yang
kompleks. Dengan menggunakan JOIN seperti INNER JOIN, LEFT JOIN, RIGHT
JOIN, maupun FULL JOIN, pengguna dapat menggabungkan data secara efisien
sesuai kebutuhan analisis. Oleh karena itu, penguasaan teknik JOIN
dalam SQL tidak hanya membantu meningkatkan kemampuan dalam menyusun
query yang efektif, tetapi juga mendukung pengambilan keputusan yang
lebih akurat berdasarkan data yang terintegrasi.
2. Alat dan Bahan
a. Perangkat Lunak
- Web Server (XAMPP)
- Terminal
b. Perangkat Keras
- Laptop / Komputer.
3. Pembahasan
3.1. Pengertian SQL
Structured Query Language (SQL) adalah bahasa standar yang digunakan untuk mengakses, mengelola, dan memanipulasi data dalam sistem basis data relasional. Dengan SQL, pengguna dapat membuat struktur tabel, mengatur hubungan antar tabel, serta melakukan operasi seperti SELECT, INSERT, UPDATE, dan DELETE. Selain itu, SQL juga berperan dalam menjaga integritas dan konsistensi data melalui berbagai aturan dan mekanisme yang tersedia di dalam sistem manajemen basis data.
Keterkaitan SQL dengan trigger terletak pada kemampuannya dalam mendukung otomatisasi proses di dalam database. Melalui perintah SQL, pengguna dapat membuat aturan tertentu yang akan dijalankan secara otomatis ketika terjadi perubahan data pada tabel. Hal ini membantu memastikan bahwa setiap perubahan tetap sesuai dengan aturan yang telah ditetapkan, meningkatkan keamanan, konsistensi, serta efisiensi dalam pengelolaan data tanpa harus selalu dilakukan secara manual.
3.2 Pengertian Trigger
Trigger adalah suatu prosedur atau perintah khusus dalam database yang dijalankan secara otomatis ketika terjadi peristiwa tertentu pada sebuah tabel, seperti INSERT, UPDATE, atau DELETE. Trigger dibuat menggunakan SQL dan biasanya digunakan untuk merespons perubahan data tanpa perlu menjalankan perintah tambahan secara manual.
Trigger berfungsi untuk menjaga konsistensi data, menerapkan aturan bisnis, melakukan validasi, atau mencatat riwayat perubahan (audit). Dengan adanya trigger, sistem database dapat secara otomatis menjalankan instruksi tertentu setiap kali terjadi perubahan data, sehingga pengelolaan data menjadi lebih terkontrol dan efisien.
Analogi sederhana:
Bayangkan trigger seperti alarm otomatis di toko.
Jika pintu dibuka → alarm berbunyi.
Jika seseorang masuk tanpa izin → sistem langsung mengunci pintu.
Di database:
Jika data diubah → trigger bisa memvalidasi.
Jika data dihapus → trigger bisa menyimpan riwayatnya.
3.3 Jenis-jenis Trigger
Jenis-jenis trigger dibedakan menjadi dua, berdasarkan waktu eksekusi dan event.
Berdasarkan waktu eksekusi:
1. BEFORE Trigger
BEFORE Trigger adalah trigger yang dijalankan sebelum data benar-benar diproses (disimpan, diubah, atau dihapus) oleh database.
Kapan digunakan:
- Untuk validasi data sebelum masuk ke tabel
- Untuk mengubah nilai otomatis sebelum disimpan
- Untuk mencegah data yang tidak sesuai aturan
Analogi:
Seperti petugas keamanan yang memeriksa barang sebelum masuk ke gedung. Jika tidak sesuai aturan, barang tidak boleh masuk.
Contoh kode:
Penjelasan: Jika ada nilai negatif yang diinput, maka otomatis diubah menjadi 0 sebelum disimpan.2. AFTER Trigger
AFTER Trigger adalah trigger yang dijalankan setelah data berhasil diproses oleh database.
Kapan digunakan:
- Untuk mencatat log atau riwayat perubahan
- Untuk memperbarui tabel lain
- Untuk perhitungan otomatis setelah data tersimpan
Analogi:
Seperti struk belanja yang dicetak setelah pembayaran berhasil dilakukan.
Contoh kode:
Penjelasan: Setelah data siswa ditambahkan, sistem otomatis mencatat ke tabel log.
Berdasarkan event:
1. BEFORE INSERT
Dijalankan sebelum data baru ditambahkan ke tabel.
Kapan digunakan:
- Untuk validasi atau manipulasi data sebelum disimpan.
Contoh kode:
2. AFTER INSERT
Dijalankan setelah data berhasil ditambahkan.
Kapan digunakan:
- Untuk membuat laporan atau mencatat aktivitas.
Contoh kode:
3. BEFORE UPDATE
Dijalankan sebelum data diperbarui.
Kapan digunakan:
- Untuk validasi perubahan atau membatasi perubahan tertentu.
Contoh kode:
4. AFTER UPDATE
Dijalankan setelah data berhasil diperbarui.
Kapan digunakan:
- Untuk mencatat perubahan data (audit trail).
Contoh kode:
5. BEFORE DELETE
Dijalankan sebelum data dihapus.
Kapan digunakan:
- Untuk mencegah penghapusan data penting.
Contoh kode:
6. AFTER DELETE
Dijalankan setelah data berhasil dihapus.
Kapan digunakan:
- Untuk menyimpan data cadangan (backup log).
Contoh kode:
3.4 Struktur Dasar Trigger
Penjelasan:
CREATE TRIGGER → membuat trigger
BEFORE/AFTER → waktu eksekusi
ON nama_tabel → tabel target
FOR EACH ROW → dijalankan untuk setiap baris yang terpengaruh
3.5 Old dan New Pada Trigger
Dalam trigger SQL, NEW dan OLD adalah kata kunci yang digunakan untuk mengakses nilai data sebelum dan sesudah suatu perubahan terjadi pada tabel. Keduanya hanya bisa digunakan di dalam trigger dan membantu kita mengetahui data mana yang sedang diproses atau diubah.
1. NEW
NEW digunakan untuk merujuk pada data yang baru dimasukkan atau nilai baru setelah diperbarui. NEW digunakan pada INSERT dan UPDATE.
- Pada INSERT, hanya ada NEW karena data sebelumnya belum ada.
- Pada UPDATE, NEW berisi nilai setelah perubahan.
Contoh kode:
Artinya: Mengisi kolom tanggal_input dengan waktu sekarang sebelum data disimpan.
2. OLD
OLD digunakan untuk merujuk pada data lama sebelum terjadi perubahan atau sebelum dihapus. OLD digunakan pada UPDATE dan DELETE
- Pada DELETE, hanya ada OLD karena data akan dihapus.
- Pada UPDATE, OLD berisi nilai sebelum perubahan.
Contoh kode:
Artinya: Membandingkan gaji lama dengan gaji baru saat update.
3.6 Contoh Studi Kasus Implementasi Trigger
Studi Kasus: Sistem Penjualan Toko
Sebuah toko ingin membuat sistem database untuk mengelola data produk dan mencatat setiap perubahan data (audit log). Sistem harus:
- Menolak harga produk yang bernilai negatif
- Otomatis mengisi tanggal input
- Mencatat setiap penambahan data
- Mencegah stok menjadi negatif
- Mencatat perubahan harga
- Menyimpan data yang dihapus ke tabel arsip
Berikut langkah-langkah pengerjaannya:
1. Membuat database
2. Membuat table
- Table produk
- Table log aktivitas
- Table arsip produk
3. Insert data awal
4. Membuat trigger lengkap
- Trigger before insert
Fungsi:
- Harga tidak boleh negatif
- Tanggal input otomatis terisi
Bagaimana cara testingnya? Kita harus insert data baru dengan data harga negatif.
Nah nanti hasilnya akan menjadi seperti ini:
- Trigger after insert
Fungsi: Mencatat aktivitas penambahan produk
Bagaimana cara testingnya? Kita harus insert data baru, nanti akan tercatat di table log_aktivitas.
Nah nanti hasilnya akan seperti ini:
-Trigger before update
Fungsi: Update dibatalkan jika stok < 0
Bagaimana cara testingnya? Kita harus update salah satu data stok menjadi negatif.
Nah nanti hasilnya akan seperti ini:
- Trigger after update
Fungsi: Mencatat perubahan harga produk
Bagaimana cara testingnya? Kita harus update salah satu data.
Nah nanti hasilnya akan seperti ini:
- Trigger before delete
Fungsi: Tidak bisa hapus produk jika stok masih tersedia
Bagaimana cara testingnya? Kita harus hapus produk yang stoknya masih ada.
Nah nanti hasilnya akan seperti ini:
- Trigger after delete
Fungsi: Menyimpan data produk yang sudah dihapus
Bagaimana cara testingnya? Kita harus update salah satu produk yang stoknya masih ada menjadi 0, lalu menghapusnya.
Nah nanti hasilnya akan seperti ini:
3.8 Kesimpulan
Trigger merupakan salah satu fitur penting dalam basis data relasional yang berfungsi untuk menjalankan perintah secara otomatis ketika terjadi peristiwa tertentu seperti INSERT, UPDATE, dan DELETE. Dengan adanya trigger, pengelolaan data menjadi lebih terkontrol karena sistem dapat melakukan validasi, pencatatan aktivitas (audit), serta penerapan aturan bisnis tanpa harus dijalankan secara manual. Pemahaman mengenai jenis-jenis trigger berdasarkan waktu eksekusi (BEFORE dan AFTER) serta berdasarkan event sangat penting agar pengguna dapat menentukan kapan dan bagaimana trigger digunakan secara tepat.
Melalui studi kasus sistem penjualan toko, dapat disimpulkan bahwa trigger mampu meningkatkan keamanan, konsistensi, dan integritas data dalam database. Proses seperti mencegah harga atau stok bernilai negatif, mencatat perubahan harga, serta menyimpan data yang dihapus ke tabel arsip menunjukkan bahwa trigger berperan besar dalam menjaga kualitas data. Dengan penerapan yang tepat, trigger membantu menciptakan sistem basis data yang lebih otomatis, efisien, dan andal dalam mendukung kebutuhan operasional maupun analisis data.
4. Daftar Pustaka
Ramadhan, M. (2023, May 17). Trigger DML di SQL Server. Medium. https://medium.com/telematika/trigger-dml-di-sql-server-342da4242fec (medium.com)(Medium)
Suprianto, D. (2021, November 28). Basis Data Part 9: Trigger MySQL. Medium. https://medium.com/@doditsuprianto/basis-data-part-9-trigger-mysql-aef904ae13f3 (medium.com)(Medium)
Fawaiq, M. N. (2019, January 31). Belajar Trigger di SQL (MySQL). YukCoding. https://yukcoding.id/belajar-trigger-di-sql/ (yukcoding.id)(YukCoding)
Dumet School. (2014, July 6). Cara Membuat Trigger di MySQL. DumetSchool. https://www.dumetschool.com/blog/Cara-Membuat-Trigger-dI-MySQL (dumetschool.com)(dumetschool.com)
GeeksforGeeks. (2025). MySQL Create Trigger. GeeksforGeeks. https://www.geeksforgeeks.org/mysql-create-trigger/ (geeksforgeeks.org)(geeksforgeeks.org)
0 Komentar