Pernahkah Anda ingin database otomatis mencatat perubahan data, memvalidasi input, atau memperbarui tabel lain setiap kali ada operasi INSERT, UPDATE, atau DELETE? Itulah fungsi Trigger di MySQL. Trigger adalah prosedur yang dieksekusi secara otomatis oleh MySQL sebagai respons terhadap event tertentu pada sebuah tabel. Artikel ini membahas cara membuat trigger MySQL secara lengkap dengan contoh nyata.
Konsep Dasar Trigger
Sebuah trigger memiliki tiga komponen utama:
-
Event: Kapan trigger aktif —
INSERT,UPDATE, atauDELETE. -
Timing: Apakah trigger berjalan
BEFORE(sebelum) atauAFTER(setelah) event terjadi. - Body: Logika SQL yang dieksekusi ketika trigger aktif.
Di dalam body trigger, Anda bisa mengakses dua referensi khusus: NEW (nilai baru yang akan/sudah disimpan) dan OLD (nilai lama sebelum diubah/dihapus).
Persiapan Tabel Contoh
-- Tabel produk utama
CREATE TABLE produk (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(200) NOT NULL,
harga DECIMAL(10,2) NOT NULL,
stok INT NOT NULL DEFAULT 0,
diperbarui DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- Tabel log untuk mencatat perubahan harga
CREATE TABLE log_perubahan_harga (
id INT AUTO_INCREMENT PRIMARY KEY,
id_produk INT NOT NULL,
harga_lama DECIMAL(10,2) NOT NULL,
harga_baru DECIMAL(10,2) NOT NULL,
diubah_pada DATETIME DEFAULT CURRENT_TIMESTAMP,
diubah_oleh VARCHAR(100) DEFAULT USER()
) ENGINE=InnoDB;
-- Tabel log untuk stok
CREATE TABLE log_stok (
id INT AUTO_INCREMENT PRIMARY KEY,
id_produk INT NOT NULL,
aksi ENUM('MASUK', 'KELUAR', 'HAPUS') NOT NULL,
stok_sebelum INT NOT NULL,
stok_sesudah INT NOT NULL,
selisih INT NOT NULL,
dicatat DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
Artikel ini ditampilkan sebagian. Untuk pembahasan selengkapnya, beserta contoh dan langkah detailnya, Anda dapat membacanya pada sumber aslinya:
Tutorial pemrograman dan tools developer lainnya juga tersedia di dhiecoderweb.com.
Top comments (0)