Pengenalan Trigger dalam Database - Perwira Learning Center


1. Latar Belakang

    Memasuki minggu kelima pembelajaran di Perwira Learning Center, kita akan membahas topik yang lebih advanced: Database Trigger. Selama ini kita fokus pada logika di backend (Node.js/Express). Tapi tahukah kamu bahwa database juga bisa menjalankan logika sendiri?

Ibarat restoran:

  • Backend = Koki yang masak sesuai pesanan
  • Database = Dapur tempat nyimpen bahan
  • Trigger = Kulkas pintar yang otomatis kurangi stok kalau ada bahan diambil!

Trigger memungkinkan database untuk "berpikir" dan bertindak secara otomatis tanpa perlu menunggu perintah dari backend. Ini penting karena:

  • Menjaga konsistensi data
  • Mengurangi beban backend
  • Memastikan aturan bisnis selalu dijalankan
  • Membuat audit trail otomatis 

Sebelum lanjut ke pembahasannya, kalian bisa download, atau pull project database saya yang ada di github melalui link berikut ini


2. Alat dan Bahan

a. Perangkat Lunak

  1. MySQL / PostgreSQL - Database
  2. phpMyAdmin / pgAdmin - Tools untuk manage database
  3. VS Code - Untuk menulis query SQL
  4. Terminal - Untuk menjalankan perintah

b. Perangkat Keras

  1. Laptop/PC dengan spesifikasi standar

3. Pembahasan

3.1 Apa Itu Trigger?

    Trigger adalah prosedur otomatis yang dijalankan oleh database sendiri ketika terjadi kejadian tertentu (INSERT, UPDATE, DELETE) pada tabel tertentu. Trigger "terpicu" secara otomatis dan menjalankan serangkaian perintah SQL.

Bahasa Gampangnya:

sql
-- Biasanya: 
Aplikasi → INSERT ke tabel → Selesai

-- Dengan Trigger:
Aplikasi → INSERT ke tabel → 🔥 TRIGGER NYALA!Database otomatis ngelakuin sesuatu
                           → Contoh: ngurangin stok, nyatet log, dll

3.2 Analogi Dengan Database

Analogi Trigger di Database plc_trigger_practice
Kasir di minimarket Setiap ada order baru (INSERT ke orders), otomatis stok di products berkurang
CCTV di mall Setiap ada perubahan gaji (UPDATE di karyawan), otomatis terekam di log_gaji
Sensor stok gudang Setiap stok menipis (<5), otomatis buat notifikasi di notifikasi
Petugas perpustakaan Setiap buku dipinjam (INSERT ke peminjaman), otomatis stok di buku berkurang

3.3 Komponen Utama Trigger

text
┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│    EVENT     │───▶│    TRIGGER   │───▶│    ACTION    │
│ (Kejadian)   │    │  (Pemicu)    │    │  (Tindakan)  │
└──────────────┘    └──────────────┘    └──────────────┘

1. EVENT (Kejadian)
Apa yang memicu trigger? Bisa berupa:

  • INSERT → Ada data baru masuk (contoh: order baru, peminjaman baru)
  • UPDATE → Ada data yang diubah (contoh: perubahan gaji, pengembalian buku)
  • DELETE → Ada data yang dihapus

2. TIMING (Waktu Eksekusi)
Kapan trigger dijalankan?

  • BEFORE → Dijalankan SEBELUM perubahan terjadi (buat validasi)
  • AFTER → Dijalankan SESUDAH perubahan terjadi (buat logging, update stok)

3. ACTION (Tindakan)
Apa yang dilakukan trigger?

  • Menjalankan perintah SQL (UPDATE, INSERT, DELETE)
  • Memodifikasi data yang akan masuk (kalo BEFORE trigger)
  • Membatalkan operasi dengan SIGNAL SQLSTATE

3.4 BEFORE vs AFTER Trigger

Perbandingan Lengkap:

Aspek BEFORE TRIGGER AFTER TRIGGER
Waktu Sebelum data berubah Setelah data berubah
Bisa batalkan? Bisa (dengan SIGNAL) Tidak bisa
Contoh di DB saya cek_stok_sebelum_order kurangi_stok_saat_order
Akses data Bisa akses NEW (data baru) Bisa akses NEW dan OLD
Use case Validasi, cek stok, hitung otomatis Audit trail, logging, update stok
 

Contoh Implementasi:

 BEFORE TRIGGER: Validasi data sebelum masuk

AFTER TRIGGER: Catat log setelah perubahan


3.5 Kenapa Harus Pakai Trigger?

Alasan 1: Menjaga Integritas Data

Trigger memastikan data selalu konsisten meskipun diakses dari berbagai aplikasi.

Contoh Kasus: Stok Barang di E-Commerce


Alasan 2: Audit Trail Otomatis

Setiap perubahan data otomatis tercatat untuk keperluan monitoring dan keamanan.

Contoh Kasus: Riwayat Gaji Karyawan



Alasan 3: Validasi Kompleks

Aturan bisnis yang rumit bisa dijalankan langsung di database.

Contoh Kasus: Aturan Penggajian



Alasan 4: Otomatisasi Tugas Repetitif

Hal-hal yang harus dilakukan SETIAP KALI ada perubahan bisa diotomatisasi.

Contoh Kasus: Update Timestamp



Alasan 5: Konsistensi Lintas Aplikasi

Kalau database-mu dipake banyak aplikasi (web, mobile, API, dll), trigger memastikan aturan tetap jalan di mana-mana.

text
┌──────────────┐
│  Web App     │
└──────┬───────┘
       │
┌──────▼───────┐    ┌──────────────────┐
│  Mobile App  │───▶│     DATABASE     │───▶ TRIGGER JALAN!
└──────┬───────┘    └──────────────────┘
       │
┌──────▼───────┐
│  API         │
└──────────────┘

✅ SEMUA aplikasi kena efek trigger!
✅ Gak ada yang bisa "lupa" jalankan aturan!

3.6 Ilustrasi Lengkap: Semua Trigger di Database Kita 

A. Siklus E-Commerce (products, orders, log_stok, notifikasi)
B. Siklus Karyawan (karyawan, log_gaji)

C. Siklus Perpustakaan (buku, peminjaman, log_peminjaman)

3.7 Daftar Lengkap Trigger di Database plc_trigger_practice

No Nama Trigger Table Event Timming Fungsi
1

cek_stok_sebelum_order

orders INSERT BEFORE

Cek stok cukup, hitung total harga

2

kurangi_stok_saat_order

orders INSERT AFTER

Kurangi stok, update terjual, catat log

3

peringatan_stok_menipis

products UPDATE AFTER

Buat notifikasi jika stok <5 atau 0

4

cek_karyawan_sebelum_insert

karyawan INSERT BEFORE

Validasi gaji minimal, umur minimal

5

validasi_gaji_sebelum_update


karyawan UPDATE BEFORE

Validasi kenaikan 20%, gaji vs direktur

6

catat_perubahan_gaji


karyawan UPDATE AFTER

Catat perubahan gaji/jabatan ke log

7

cek_stok_buku_sebelum_pinjam

peminjaman INSERT BEFORE

Cek stok buku, set tgl_pinjam otomatis

8

kurangi_stok_buku_saat_pinjam

peminjaman INSERT AFTER

Kurangi stok buku, catat log peminjaman

9

validasi_pengembalian_buku

peminjaman

UPDATE

BEFORE

Validasi tgl kembali >= tgl pinjam

10

tambah_stok_buku_saat_kembali

peminjaman UPDATE AFTER

Tambah stok buku, catat log pengembalian

11

update_timestamp_products

products UPDATE BEFORE

Auto-update updated_at


 3.8 Keuntungan dan Kekurangan Trigger

KEUNTUNGAN:

No Keuntungan Contoh di Database Kita
1 Otomatis Jalan sendiri, gak perlu kode backend
2 Konsisten Aturan stok, gaji, peminjaman berlaku untuk semua aplikasi
3 Cepat Eksekusi di level database, tanpa network latency
4 Aman Gak bisa "dilewati" oleh aplikasi manapun
5 Audit Trail Semua perubahan gaji dan peminjaman tercatat otomatis
6 Data Integrity Stok gak bakal minus, gaji sesuai aturan

KEKURANGAN:

No Kekurangan Penjelasan
1 Hidden Logic Logika tersembunyi di database, perlu didokumentasi
2 Debugging Sulit Error di trigger susah dilacak
3 Performa Bisa bikin lambat kalo terlalu banyak
4 Portability Sintaks trigger beda tiap database
5 Cascading Effect Satu trigger bisa picu trigger lain

3.8 Kapan Pakai Trigger? (Guidelines)

PAKAI TRIGGER KALO... JANGAN PAKAI TRIGGER KALO...
Mau audit trail otomatis (log_gaji, log_peminjaman) Logika bisnis yang kompleks dan sering berubah
Mau jaga konsistensi data (stok gak boleh minus) Butuh integrasi dengan sistem eksternal (API, email)
Aturan sederhana yang universal (validasi gaji) Aturan yang beda-beda tiap aplikasi
Gak bisa dihandle di aplikasi (karena banyak app) Butuh komunikasi ke user (notifikasi realtime)
Mau prevent invalid data (cegah stok minus) Logika yang butuh data dari luar database

4. Latihan Praktikum

Exercise 1: Trigger Sederhana

Buat database perpustakaan dengan tabel:

  • buku (id, judul, penulis, stok)
  • peminjaman (id, buku_id, anggota, tgl_pinjam, tgl_kembali)

Buat trigger yang:

  1. Otomatis kurangi stok buku saat ada peminjaman baru
  2. Otomatis tambah stok buku saat buku dikembalikan
  3. Cek stok sebelum peminjaman (jangan sampai minus)

Exercise 2: Audit Trail

Buat tabel log_peminjaman dan trigger yang mencatat:

  • Siapa yang pinjam
  • Buku apa
  • Kapan pinjam
  • Kapan kembali

Exercise 3: Validasi

Buat trigger yang mencegah:

  • Peminjaman buku yang stoknya 0
  • Pengembalian dengan tanggal yang lebih kecil dari tanggal pinjam 

5. Daftar Pustaka 

  1. MySQL Documentation (n.d.). 27.3.1 Trigger Syntax and Examples. https://dev.mysql.com
  2. MYSQL Tutorial (n.d.). MySQL Triggershttps://www.mysqltutorial.org
  3. Devart (n.d.). Triggers in MySQL: Definition and How to Use them. https://www.devart.com
  4. GeeksforGeeks (2025). SQL Create Trigger. https://www.geeksforgeeks.org
  5. W3Resource (2022). MySQL Triggers. https://www.w3resource.com

Posting Komentar

0 Komentar