Trigger
Apa itu Trigger dalam Database?
Trigger adalah sebuah alat otomatis dalam database yang "terpicu" atau dijalankan setiap kali ada perubahan data tertentu. Jadi, jika kamu melakukan INSERT, UPDATE, atau DELETE pada tabel, trigger bisa langsung dijalankan untuk melakukan tugas lain secara otomatis, seperti memvalidasi data atau mengupdate tabel lain.
Bagaimana Trigger Bekerja?
-
Pemicu (Event): Ini adalah peristiwa yang memicu trigger untuk dijalankan. Misalnya, INSERT berarti trigger akan dijalankan ketika ada data yang ditambahkan ke tabel.
-
Waktu Eksekusi: Trigger bisa dijalankan sebelum perubahan terjadi (BEFORE) atau setelah perubahan terjadi (AFTER).
-
Logika dalam Trigger: Setelah pemicu terjadi, trigger akan menjalankan beberapa logika, seperti memeriksa data, mengupdate kolom lain, atau mencatat perubahan ke tabel audit.
-
Referensi Data: Trigger bisa mengakses data yang diubah dengan menggunakan
NEW
(untuk data yang baru) danOLD
(untuk data yang lama).
Contoh Sederhana
Bayangkan kamu memiliki tabel stok_barang
, dan kamu ingin secara otomatis mengurangi jumlah stok barang ketika ada penjualan. Setiap kali data penjualan dimasukkan ke dalam tabel penjualan
, kita ingin mengurangi stok barang yang terjual.
Tabel Stok Barang:
CREATE TABLE stok_barang (
id INT PRIMARY KEY,
nama VARCHAR(100),
jumlah INT
);
Tabel Penjualan:
CREATE TABLE penjualan (
id INT PRIMARY KEY,
id_barang INT,
jumlah_terjual INT,
tanggal DATE
);
Trigger untuk Mengurangi Stok Otomatis:
Kita akan membuat trigger yang berjalan setelah data dimasukkan ke tabel penjualan
. Trigger ini akan mengurangi jumlah barang yang terjual di tabel stok_barang
.
DELIMITER $$
CREATE TRIGGER after_penjualan
AFTER INSERT ON penjualan
FOR EACH ROW
BEGIN
-- Kurangi stok barang sesuai jumlah yang terjual
UPDATE stok_barang
SET jumlah = jumlah - NEW.jumlah_terjual
WHERE id = NEW.id_barang;
END $$
DELIMITER ;
Penjelasan Kode:
-
AFTER INSERT ON penjualan: Trigger ini dijalankan setelah ada data yang dimasukkan ke tabel
penjualan
. -
NEW.jumlah_terjual: Ini adalah data dari baris yang baru saja dimasukkan ke tabel
penjualan
.NEW
digunakan untuk mengakses data yang baru. -
UPDATE stok_barang: Setelah penjualan dilakukan, trigger ini mengurangi jumlah stok barang di tabel
stok_barang
sesuai dengan jumlah yang terjual.
Apa yang Terjadi Ketika Penjualan Ditambahkan?
Misalkan ada data penjualan baru:
INSERT INTO penjualan (id_barang, jumlah_terjual, tanggal)
VALUES (1, 3, '2025-09-18');
-
Data penjualan ini akan memicu trigger.
-
Trigger akan mengurangi stok barang dengan
id = 1
sebanyak 3 unit.
Kapan Menggunakan Trigger?
Trigger sangat berguna jika kamu ingin melakukan hal-hal seperti:
-
Mencatat riwayat perubahan: Misalnya, mencatat perubahan pada tabel
produk
ke tabel audit. -
Validasi otomatis: Menjamin data yang dimasukkan sesuai dengan aturan tertentu.
-
Pemeliharaan data: Menjaga konsistensi data antar tabel, seperti mengupdate stok saat terjadi penjualan.
Jenis-Jenis Trigger yang Ada :
-
Trigger AFTER (AFTER Trigger):
Trigger jenis ini akan dieksekusi setelah operasi (INSERT, UPDATE, DELETE) berhasil dilakukan pada tabel. Misalnya, jika ingin melakukan sesuatu setelah data berhasil dimasukkan ke dalam tabel, seperti memperbarui tabel lain atau membuat log.Contoh: Mengupdate data lain setelah ada perubahan di tabel utama.
-
Trigger BEFORE (BEFORE Trigger):
Trigger jenis ini dieksekusi sebelum operasi tertentu terjadi pada tabel. Biasanya, trigger ini digunakan untuk memvalidasi data atau melakukan pengecekan terhadap data yang akan dimasukkan, diubah, atau dihapus.Contoh: Memvalidasi data yang akan dimasukkan ke dalam tabel agar memenuhi syarat tertentu.
-
Trigger INSTEAD OF (INSTEAD OF Trigger):
Trigger ini mengabaikan operasi yang diminta (INSERT, UPDATE, DELETE) dan menggantinya dengan eksekusi trigger itu sendiri. Biasanya digunakan dalam view atau materialized view.Contoh: Jika kita ingin mengganti tindakan INSERT dengan memasukkan data ke dua tabel berbeda secara bersamaan.
Komponen yang Ada dalam Trigger
Trigger biasanya terdiri dari beberapa komponen:
-
Event: Peristiwa yang memicu trigger, seperti INSERT, UPDATE, atau DELETE.
-
Timing: Menentukan kapan trigger akan dijalankan, apakah sebelum atau sesudah peristiwa.
-
Action: Kode SQL yang akan dijalankan setelah trigger dipicu, seperti UPDATE atau INSERT ke tabel lain.
0 komentar:
Posting Komentar