0% menganggap dokumen ini bermanfaat (0 suara)
43 tayangan17 halaman

Modul 2 - Trigger Lanjut

Modul ini membahas tentang trigger tingkat lanjut pada MySQL, termasuk before update trigger untuk menyimpan log perubahan data, after update trigger untuk menyimpan log status transaksi, dan before delete trigger untuk menyimpan log penghapusan data.

Diunggah oleh

Sofyan Hadi
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 PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
43 tayangan17 halaman

Modul 2 - Trigger Lanjut

Modul ini membahas tentang trigger tingkat lanjut pada MySQL, termasuk before update trigger untuk menyimpan log perubahan data, after update trigger untuk menyimpan log status transaksi, dan before delete trigger untuk menyimpan log penghapusan data.

Diunggah oleh

Sofyan Hadi
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 PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 17

MODUL 2

TRIGGER TINGKAT LANJUT

1. Before Update Trigger


Pernyataan BEFORE UPDATE secara otomatis diaktifkan ketika terjadi proses perubahan
data pada tabel. Berikut adalah sintaks dasar dari pernyataan tigger BEFORE UPDATE:

CREATE TRIGGER trigger_name


BEFORE UPDATE
ON table_name FOR EACH ROW
trigger_body;
Penjelasan sintaks:
 Pertama, tentukan nama trigger yang dibuat setelah klausa CREATE TRIGGER.
 Kedua, gunakan klausa BEFORE UPDATE 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 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

Contoh Pembuatan Trigger BEFORE UPDATE:

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:

 Pertama, dibuat sebuah trigger dengan nama “before_update_hargaBarang” dengan


menggunakan kalusa CREATE TRIGGER:

 Kedua, tentukan kapan trigger aktif.

 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:

CREATE TRIGGER trigger_name


AFTER UPDATE
ON table_name FOR EACH ROW
trigger_body;
Penjelasan sintaks:
 Pertama, tentukan nama trigger yang dibuat setelah klausa CREATE TRIGGER.
 Kedua, gunakan klausa AFTER UPDATE 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
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

Contoh Pembuatan Trigger AFTER UPDATE:

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:

 Pertama, dibuat sebuah trigger dengan nama “after_update_statusTrans” dengan


menggunakan kalusa CREATE TRIGGER:

 Kedua, tentukan kapan trigger aktif.

 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”.

Selanjutnya lakukan proses perubahan status transaksi pada tabel logDetailTransaksi.


Sebelum itu tampilkan terlebih dahulu tabel “logDetailTransaksi”. Dari gambar di bawah dapat
dilihat bahwa tabel masih Empty set.

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.

3. Before Delete Trigger


Pernyataan BEFORE DELETE secara otomatis diaktifkan ketika terjadi proses
penghapusan data pada tabel. Berikut adalah sintaks dasar dari pernyataan tigger BEFORE
DELETE:

CREATE TRIGGER trigger_name


BEFORE DELETE
ON table_name FOR EACH ROW

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

Contoh Pembuatan Trigger BEFORE DELETE:

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:

 Pertama, dibuat sebuah trigger dengan nama “before_delete_barang” dengan


menggunakan kalusa CREATE TRIGGER:

 Kedua, tentukan kapan trigger aktif.

 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:

CREATE TRIGGER trigger_name


AFTER DELETE
ON table_name FOR EACH ROW
trigger_body;
Penjelasan sintaks:
 Pertama, tentukan nama trigger yang dibuat setelah klausa CREATE TRIGGER.
 Kedua, gunakan klausa AFTER 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
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

Contoh Pembuatan Trigger AFTER DELETE:

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:

 Pertama, dibuat sebuah trigger dengan nama “after_delete_user” dengan menggunakan


kalusa CREATE TRIGGER:

 Kedua, tentukan kapan trigger aktif.

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

Bagaimana MySQL mengatasi error selama trigger di eksekusi.

 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

Anda mungkin juga menyukai