0% menganggap dokumen ini bermanfaat (0 suara)
13 tayangan16 halaman

Week 5

Trigger dalam basis data adalah blok perintah SQL yang otomatis dijalankan saat terjadi peristiwa pada tabel, seperti insert, update, atau delete. Trigger digunakan untuk otomatisasi proses, validasi data, dan menjaga integritas data, dengan berbagai jenis seperti BEFORE dan AFTER untuk masing-masing peristiwa. Contoh penggunaannya termasuk mengubah nama menjadi huruf kapital sebelum insert dan mencatat log setelah data diinsert atau dihapus.

Diunggah oleh

dimassuseno27
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
13 tayangan16 halaman

Week 5

Trigger dalam basis data adalah blok perintah SQL yang otomatis dijalankan saat terjadi peristiwa pada tabel, seperti insert, update, atau delete. Trigger digunakan untuk otomatisasi proses, validasi data, dan menjaga integritas data, dengan berbagai jenis seperti BEFORE dan AFTER untuk masing-masing peristiwa. Contoh penggunaannya termasuk mengubah nama menjadi huruf kapital sebelum insert dan mencatat log setelah data diinsert atau dihapus.

Diunggah oleh

dimassuseno27
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 16

Database

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

Trigger • Loggig/Audit Trail


• Menjaga Integritas Data
Database

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;

• Artinya: Saat data mahasiswa dimasukkan,


sistem otomatis mengubah kolom Nama
menjadi huruf kapital sebelum disimpan.
Database Contoh
SQL:
INSERT INTO Mahasiswa (NIM, Nama, Prodi)
VALUES ('231001', 'ani wijaya', 'Informatika');
BEFORE
INSERT Hasil:

NIM Nama Prodi


231001 ANI WIJAYA Informatika
Database

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;

• Artinya: Setelah data baru masuk ke tabel


Mahasiswa, sistem menyimpan catatan ke
tabel Log_Mahasiswa.
Database

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

BEFORE BEFORE UPDATE ON Mahasiswa


FOR EACH ROW
BEGIN

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;

• Artinya: Validasi bahwa hanya user


tertentu (admin) yang boleh mengubah
Prodi.
Database Contoh SQL:
UPDATE Mahasiswa
SET Prodi = 'Teknik Sipil'

BEFORE WHERE NIM = '231002';

• Hasil

UPDATE • Error: Hanya


mengubah Prodi
admin yang boleh
Database

AFTER UPDATE
• Setelah data berhasil diperbarui, trigger
dijalankan.
• Contoh Kasus: Simpan riwayat perubahan IPK
mahasiswa.

CREATE TABLE Riwayat_IPK (


NIM VARCHAR(10),
IPK_Lama DECIMAL(3,2),
IPK_Baru DECIMAL(3,2),
Tanggal_Update DATETIME
);

• Artinya: Setelah IPK mahasiswa diperbarui,


sistem menyimpan histori perubahan ke tabel
Riwayat_IPK.
Database
AFTER UPDATE
• Catat perubahan IPK ke tabel riwayat.
CREATE TRIGGER after_update_ipk
AFTER UPDATE ON Mahasiswa
FOR EACH ROW
BEGIN
IF OLD.IPK <> NEW.IPK THEN
INSERT INTO Riwayat_IPK (NIM, IPK_Lama, IPK_Baru,
Tanggal_Update)
VALUES (NEW.NIM, OLD.IPK, NEW.IPK, NOW());
END IF;
END;

• UPDATE Mahasiswa SET IPK = 3.75 WHERE NIM =


'231001';

NIM IPK_Lama IPK_Baru Tanggal_Update


2025-05-17
231001 3.50 3.75 10:10:20
Database

CREATE TRIGGER before_delete_mhs

BEFORE BEFORE DELETE ON Mahasiswa


FOR EACH ROW
BEGIN

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;

• Artinya: Mahasiswa yang statusnya


masih aktif tidak dapat dihapus dari
database.
Database

DELETE FROM Mahasiswa


BEFORE WHERE NIM = '231001';
Error: Data mahasiswa aktif tidak boleh

DELETE dihapus!
• Setelah data berhasil dihapus, catat
Database
penghapusan tersebut.
• Contoh Kasus: Simpan ke log jika data
mahasiswa dihapus.

CREATE TABLE Log_Hapus (


NIM VARCHAR(10),
Nama VARCHAR(100),
Waktu_Hapus DATETIME
);

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;

• DELETE FROM Mahasiswa WHERE NIM =


'231002';
NIM Nama Waktu_Hapus
231002 BUDI SANTOSO 2025-05-17 10:13:55

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).

Hindari trigger berantai terlalu banyak, agar tidak mempengaruhi performa

sistem.
-

Anda mungkin juga menyukai