Week 5
Week 5
TRIGGER
BASIS DATA
2
Database
Trigger adalah blok perintah SQL
yang secara otomatis dijalankan
oleh sistem database saat terjadi
suatu peristiwa (event) pada
tabel, seperti:
• CInsert
• Update
• Delete
Fungsinya
• Otomatisasi Proses
• Validasi Data
Jenis-jenis
Trigger
Definition:
BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE
Database
• Sebelum data dimasukkan, sistem akan
mengecek atau memodifikasi nilai.
• Contoh Kasus: Menyimpan nama dalam huruf
kapital sebelum insert.
BEFORE
INSERT Contoh
SQL:
CREATE TRIGGER before_insert_kapital
BEFORE INSERT ON Mahasiswa
FOR EACH ROW
BEGIN
SET NEW.Nama = UPPER(NEW.Nama);
END;
AFTER INSERT
• Setelah data berhasil dimasukkan, trigger akan
dijalankan.
• Contoh Kasus: Mencatat ke tabel log setelah
mahasiswa ditambahkan.
CREATE TRIGGER after_insert_log
AFTER INSERT ON Mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO Log_Mahasiswa (NIM, Aksi, Waktu)
VALUES (NEW.NIM, 'Insert', NOW());
END;
AFTER INSERT
INSERT INTO Mahasiswa (NIM, Nama, Prodi)
VALUES ('231002', 'Budi Santoso', 'SI');
Hasil:
ID NIM Aksi Waktu
1 231002 Insert 2025-05-17 10:02:43
Database Contoh SQL:
CREATE TRIGGER
before_update_prodi
UPDATE
IF USER() NOT LIKE '%admin%'
THEN
SIGNAL SQLSTATE '45000'
• Sebelum data diubah, trigger dijalankan SET MESSAGE_TEXT = 'Hanya
untuk validasi atau manipulasi. admin yang boleh mengubah
Prodi';
• Contoh Kasus: Cegah perubahan nilai END IF;
Prodi jika bukan ‘Admin’. END;
• Hasil
AFTER UPDATE
• Setelah data berhasil diperbarui, trigger
dijalankan.
• Contoh Kasus: Simpan riwayat perubahan IPK
mahasiswa.
DELETE
IF OLD.Status = 'Aktif' THEN
SIGNAL SQLSTATE '45000'
• Sebelum data dihapus, sistem bisa
SET MESSAGE_TEXT = 'Data mahasiswa
memverifikasi atau mencegah
aktif tidak boleh dihapus!';
penghapusan.
• Contoh Kasus: Cegah penghapusan END IF;
mahasiswa dengan status ‘Aktif’. END;
DELETE dihapus!
• Setelah data berhasil dihapus, catat
Database
penghapusan tersebut.
• Contoh Kasus: Simpan ke log jika data
mahasiswa dihapus.
AFTER
DELETE • Artinya: Setelah mahasiswa dihapus, data
mereka dicatat di tabel log.
CREATE TRIGGER after_delete_mhs
Database AFTER DELETE ON Mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO Log_Hapus (NIM, Nama,
Waktu_Hapus)
VALUES (OLD.NIM, OLD.Nama, NOW());
END;
AFTER
DELETE
Database
TIPS UMUM
MENGGUNAKAN TRIGGER
Gunakan BEFORE saat ingin mencegah atau mengubah sebelum data masuk.
Gunakan AFTER saat ingin melakukan tindakan setelah berhasil (seperti logging).
sistem.
-