Modul 2 - Trigger Lanjut
Modul 2 - Trigger Lanjut
Jika memiliki beberapa pernyataan di trigger_body, gunakan blok BEGIN END dan
mengubah delimiter default:
DELIMITER $$
CREATE TRIGGER trigger_name
BEFORE UPDATE
ON table_name FOR EACH ROW
BEGIN
-- statements
END$$
DELIMITER ;
99
Dalam trigger BEFORE UPDATE dimungkinkan untuk mengakses dan mengubah NEW
values dan OLD values.
BEFORE
UPDATE
UPDATE…
TABEL Trigger
Trigger
Kasus yang dibahas adalah membuat trigger untuk menyimpan log update harga pada tabel
barang. Ketika terjadi perubahan (UPDATE) pada harga barang di tabel barang maka akan
mengaktifkan sebuah trigger untuk menyimpan harga barang lama. Pertama, buat terlebih dahulu
tabel penyimpanan log update harga barang dengan nama “logHargaBarang”.
Setelah itu, buat trigger yang akan melakukan penyimpanan log update harga pada tabel
barang sebelum dilakukannya proses UPDATE pada tabel barang.
100
Penjelasan sintaks:
Ketiga, tentukan trigger berasosiasi dengan tabel apa, dalam hal ini berasosiasi dengan
tabel “barang”.
Terakhir, statement yang akan dikerjakan saat trigger aktif. Pada kasus ini akan
melakukan perubahan pada total jumlah barang pada tabel “statusTotalBarang”.
Selanjutnya lakukan proses perubahan harga pada tabel barang. Sebelum itu tampilkan
terlebih dahulu tabel “logHargaBarang”. Dari gambar di bawah dapat dilihat bahwa tabel masih
Empty set.
Setelah itu lakukan proses perubahan harga pada tabel barang seperti gambar di bawah ini.
101
Selanjutnya lakukan pengecekan pada tabel “barang” dan “logHargaBarang” dan lihat
apakah sudah ada perubahan pada datanya.
Dapat dilihat bahwa proses perubahan data untuk idBarang = “B010” telah berhasil yang
mana harganya telah berubah menjadi 120000. Pada tabel logHargaBarang juga telah terjadi
penambahan data log perubahan harga yang menyimpan harga lama sebelum dilakukan perubahan
dan kapan waktu dilakukannya perubahan.
102
2. After Update Trigger
Pernyataan AFTER UPDATE secara otomatis diaktifkan ketika terjadi proses perubahan
data pada tabel. Berikut adalah sintaks dasar dari pernyataan tigger AFTER UPDATE:
Jika memiliki beberapa pernyataan di trigger_body, gunakan blok BEGIN END dan
mengubah delimiter default:
DELIMITER $$
CREATE TRIGGER trigger_name
AFTER UPDATE
ON table_name FOR EACH ROW
BEGIN
-- statements
END$$
DELIMITER ;
103
Seperti yang dijelaskan sebelumnya, dalam trigger AFTER UPDATE dimungkinkan untuk
mengakses dan mengubah NEW values dan OLD values.
AFTER
UPDATE
UPDATE…
TABEL Trigger
Trigger
Kasus yang dibahas adalah membuat trigger untuk menyimpan log perubahan status
transaksi pada tabel detailtransaksi. Ketika terjadi perubahan (UPDATE) pada status transaksi di
tabel detailtransaksi maka akan mengaktifkan sebuah trigger untuk menyimpan informasi
perubahan transaksi. Pertama, buat terlebih dahulu tabel penyimpanan log perubahan status
transaksi dengan nama “logDetailTransaksi”.
Setelah itu, buat trigger yang akan melakukan penyimpanan informasi perubahan status
ketika terjadi update pada tabel detailtransaksi setelah dilakukannya proses UPDATE.
104
Penjelasan sintaks:
Ketiga, tentukan trigger berasosiasi dengan tabel apa, dalam hal ini berasosiasi dengan
tabel “detailtransaksi”.
Terakhir, statement yang akan dikerjakan saat trigger aktif. Pada kasus ini akan
menyimpan informasi perubahan status transaksi pada tabel “logDetailTransaksi”.
Setelah itu lakukan proses perubahan status pada tabel detailtransaksi seperti gambar di
bawah ini.
105
Selanjutnya lakukan pengecekan pada tabel “detailtransaksi” dan “logDetailTransaksi” dan
lihat apakah sudah ada perubahan pada datanya.
Dari gambar diatas terihat bahwa perubahan pada status transaksi di tabel detailtransaksi
untuk ID transaksi “DT007” telah berhasil yang mana sebelumnya memiliki status menunggu
pembayaran berubah menjadi selesai. Setelah dilakukan proses update pada tabel detailtransaksi,
selanjutnya trigger AFTER UPDATE aktif dan meyimpan informasi perubahan pada tabel
logDetailTransaksi.
106
trigger_body;
Penjelasan sintaks:
Pertama, tentukan nama trigger yang dibuat setelah klausa CREATE TRIGGER.
Kedua, gunakan klausa BEFORE DELETE untuk menentukan waktu untuk memanggil
trigger.
Ketiga, tentukan nama tabel yang dikaitkan dengan trigger setelah kata kunci ON.
Terakhir, tentukan badan trigger yang berisi satu atau beberapa pernyataan SQL yang
dijalankan saat trigger aktif.
Jika memiliki beberapa pernyataan di trigger_body, gunakan blok BEGIN END dan
mengubah delimiter default:
DELIMITER $$
CREATE TRIGGER trigger_name
BEFORE DELETE
ON table_name FOR EACH ROW
BEGIN
-- statements
END$$
DELIMITER ;
107
Dalam trigger BEFORE DELETE dimungkinkan untuk mengakses dan mengubah OLD
values. Namun untuk pengaksesan NEW values tidak dimungkinkan karena dalam proses
penghapusan tidak ada NEW values tidak ada.
BEFORE
DELETE
DELETE…
TABEL Trigger
Kasus yang dibahas adalah membuat trigger untuk menyimpan log penghapusan barang
pada tabel barang. Ketika terjadi penghapusan data (DELETE) pada tabel barang maka akan
mengaktifkan sebuah trigger untuk menyimpan informasi barang yang dihapus dan waktu
penghapusan. Pertama, buat terlebih dahulu tabel penyimpanan log penghapusan barang dengan
nama “logHapusBarang”.
Setelah itu, buat trigger yang akan melakukan penyimpanan informasi penghapusan
barang ketika terjadi proses DELETE pada tabel barang.
108
Penjelasan sintaks:
Ketiga, tentukan trigger berasosiasi dengan tabel apa, dalam hal ini berasosiasi dengan
tabel “barang”.
Terakhir, statement yang akan dikerjakan saat trigger aktif. Pada kasus ini akan
menyimpan informasi barang yang di hapus pada tabel “logHapusBarang”.
Selanjutnya lakukan proses pengahapusan data pada tabel barang. Sebelum itu tampilkan
terlebih dahulu tabel “logHapusBarang”. Dari gambar di bawah dapat dilihat bahwa tabel masih
Empty set.
109
Setelah itu lakukan proses pengahapusan data pada tabel barang seperti gambar di bawah
ini.
Selanjutnya lakukan pengecekan pada tabel “barang” dan “logHapusBarang” dan lihat
apakah sudah ada perubahan pada datanya.
Dari gambar diatas terihat bahwa pengahapusan barang di tabel barang untuk ID barang
“B015” telah berhasil. Setelah dilakukan proses DELETE pada tabel barang, selanjutnya trigger
BEFORE DELETE aktif dan meyimpan informasi data barang yang dihapus pada tabel barang
pada tabel logHapusBarang.
110
4. After Delete Trigger
Pernyataan AFTER DELETE secara otomatis diaktifkan ketika terjadi proses penghapusan
data pada tabel. Berikut adalah sintak dasar dari pernyataan tigger AFTER DELETE:
Jika memiliki beberapa pernyataan di trigger_body, gunakan blok BEGIN END dan
mengubah delimiter default:
DELIMITER $$
CREATE TRIGGER trigger_name
AFTER DELETE
ON table_name FOR EACH ROW
BEGIN
-- statements
END$$
DELIMITER ;
111
Dalam trigger AFTER DELETE dimungkinkan untuk mengakses dan mengubah OLD values.
Namun untuk pengaksesan NEW values tidak dimungkinkan karena dalam proses penghapusan
tidak ada NEW values tidak ada.
AFTER
DELETE
DELETE…
TABEL Trigger
Kasus yang dibahas adalah membuat trigger untuk menyimpan log penghapusan user pada
tabel user. Ketika terjadi penghapusan data (DELETE) pada tabel user maka akan mengaktifkan
sebuah trigger untuk menyimpan informasi user yang dihapus dan waktu penghapusan serta siapa
yang menghapusnya. Pertama, buat terlebih dahulu tabel penyimpanan log penghapusan user
dengan nama “logHapusUser”.
112
Setelah itu, buat trigger yang akan melakukan penyimpanan informasi penghapusan user
ketika terjadi proses DELETE pada tabel userCCR.
Penjelasan sintaks:
Ketiga, tentukan trigger berasosiasi dengan tabel apa, dalam hal ini berasosiasi dengan
tabel “barang”.
Terakhir, statement yang akan dikerjakan saat trigger aktif. Pada kasus ini akan
menyimpan informasi barang yang di hapus pada tabel “logHapusUser”.
113
Selanjutnya lakukan proses pengahapusan data pada tabel user. Sebelum itu tampilkan
terlebih dahulu tabel “logHapusUser”. Dari gambar di bawah dapat dilihat bahwa tabel masih
Empty set.
Setelah itu lakukan proses pengahapusan data pada tabel user seperti gambar di bawah ini.
Selanjutnya lakukan pengecekan pada tabel user dan logHapusUser dan lihat apakah sudah
ada perubahan pada datanya.
Dari gambar diatas terihat bahwa pengahapusan user di tabel user untuk ID user “A005”
telah berhasil. Setelah dilakukan proses DELETE pada tabel barang, selanjutnya trigger AFTER
DELETE aktif dan meyimpan informasi data user yang dihapus pada tabel user pada tabel
logHapusUser.
Jika trigger BEFORE gagal, operasi pada baris yang di eksekusi tidak dilakukan.
Trigger BEFORE diaktifkan dalam upaya untuk menyisipkan atau memodifikasi baris,
terlepas dari apakah upaya selanjutnya berhasil.
114
Trigger AFTER dijalankan hanya jika ada trigger BEFORE dan operasi baris lainnya
berhasil dijalankan.
Kesalahan selama trigger BEFORE atau AFTER mengakibatkan kegagalan seluruh
pernyataan yang menyebabkan pemanggilan trigger.
Untuk tabel yang prosesnya dilakukan, kegagalan pernyataan akan menyebabkan rollback
semua perubahan yang dilakukan oleh pernyataan.
Latihan Modul 2
1. Buatlah satu contoh kasus penerapan pembuatan trigger before update pada database
yang telah kalian buat dan berikan penjelasan mengenai tujuan dari contoh kasusnya.
2. Buatlah satu contoh kasus penerapan pembuatan trigger after update pada database yang
telah kalian buat dan berikan penjelasan mengenai tujuan dari contoh kasusnya.
3. Buatlah satu contoh kasus penerapan pembuatan trigger before insert pada database yang
telah kalian buat dan berikan penjelasan mengenai tujuan dari contoh kasusnya.
4. Buatlah satu contoh kasus penerapan pembuatan trigger after insert pada database yang
telah kalian buat dan berikan penjelasan mengenai tujuan dari contoh kasusnya.
115