2. Definisi Trigger
Trigger adalah sebuah objek database yang di
asosiasikan dengan sebuah tabel dan akan aktif
(terpicu/trigger) ketika sebuah event terjadi
pada tabel tersebut
Trigger hanya terjadi ketika ada eksekusi INSERT,
DELETE, dan UPDATE pada tabel yang
bersangkutan
Waktu eksekusi trigger yang mungkin terjadi
terdiri dari 2 yaitu BEFORE dan AFTER dari
statement SQLnya
agus andri putra, ST.
3. Keuntungan menggunakan Trigger
Trigger
dapat digunakan untuk mengubah
data sebelum proses INSERT dilakukan atau
untuk memberikan nilai default, misalnya
mengubah data diluar nilai yang
diperbolehkan, contoh : jika ada pengisian
nilai diatas 100, maka akan di jadikan 100.
Kita dapat menyimpan data suatu record ke
tabel lain ( misalnya history) sebelum data
tersebut diupdate atau di delete. Sehingga
semua perubahan data dapat dilacak dari
sejak data itu di buat
agus andri putra, ST.
5. Mengakses nilai baru dan lama
Dalam
trigger, kita dapat mengakses data
lama dan data baru . Data lama dapat
direference dengan record OLD dan data
baru dengan record NEW
Untuk
mengacu ke sebuah field dapat ditulis
dengan NEW.nama_field atau
OLD.nama_field
agus andri putra, ST.
6. Contoh 1
Ada
sebuah tabel mahasiswa ( nim, nama,
alamat)
Buatlah sebuah trigger yang akan
menyimpan history alamat. Jika sebuah
alamat berubah, maka alamat lama harus
disimpan di tabel history alamat.
agus andri putra, ST.
7. Kemudian isi tabel tersebut sesuai dengan type data dan
nama field nya
Dan siapkan tabel history untuk penyimpanan selanjutnya :
agus andri putra, ST.
9. Contoh penggunaan trigger
Mengubah data yang sudah dengan :
Maka data yang lama akan disimpan di tabel history_alamat_mahasiswa
agus andri putra, ST.
10. Untuk
bisa melihat alamat yang pernah di
pakai oleh nim 1210705138
Inilah tampilannya :
agus andri putra, ST.
11. Optimalisasi trigger
Trigger pertama mempunyai kekurangan yaitu
ketika ada perubahan di tabel mahasiswa
walaupun tidak mengubah kolom alamat, maka
statement INSERT ditabel history akan dijalankan.
Untuk mengoptimalkannya dengan membuat
trigger seperti ini :
agus andri putra, ST.
12. Contoh 2
Buatlah suatu trigger yang akan dieksekusi ketika
ada perubahan NIM di tabel mahasiswa yang
akan melakukan update ke tabel
history_alamat_mahasiswa untuk menyesuaikan
NIM-nya agar relasinya tidak terlepas
agus andri putra, ST.
13. Jika
kita mengeksekusi trigger tersebut maka
akan peringatan yang berisi :
Artinya
kita tidak bisa membuat multiple
trigger pada sebuah tabel pada waktu dan
event yang sama
Solusi yang bisa dilakukan adalah
menggabung isi trigger
trig_update_mahasiswa dengan isi trigger baru
agus andri putra, ST.
15. Perubahan contoh 2
Hasil :
UPDATE mahasiswa SET nim= 1210705140 WHERE nim= 1210705138;
Hasil :
agus andri putra, ST.
16. Keterangan tambahan
Trigger
pada contoh sebelumnya bisa dimodifikasi
untuk membuat trigger yang akan menghapus
semua data pada tabel
history_alamat_mahasiswa ketika ada
penghapusan pada tabel mahasiswa
Hal
tersebut bisa dilakukan dengan membuat
trigger AFTER DELETE ON mahasiswa yang akan
menghapus semua data pada tabel
history_alamat_mahasiswa yang sesuai nim-nya
dengan nim dari tabel mahasiswa yang akan
dihapus (DELETE FROM history_alamat_mahasiswa
WHERE nim=OLD.nim)
agus andri putra, ST.
17. Contoh 3
Buatlah
suatu trigger yang mencegah
perubahan pada primary key tabel
mahasiswa (field nim). Jika ada perubahan,
maka nim tidak boleh berubah
Hal
ini dapat dilakukan yaitu dengan mengeset
nilai nim yang baru (NEW.nim) dengan nilai
yang sama (OLD.nim)
agus andri putra, ST.
18. Contoh 3
Buat trigger baru dengan nama trig_update_nim_mahasiswa
agus andri putra, ST.
19. Hasil
Nim baru , tapi tidak akan berpengaruh
agus andri putra, ST.
20. Kelas IF-A
Latihan praktek
Buatlah
sebuah tabel untuk menyimpan data
transaksi transfer yang strukturnya sebagai
berikut :
NoTransaksi
WaktuTransaksi
NoRekPengirim
NoRekPenerima
BesarTransfer
:INT auto_increment
:DATETIME
:INT, FK REF rekening(No)
:INT, FK REF rekening(No)
:DOUBLE
Jika
penambahan data dari tabel transfer
(AFTER INSERT ON transfer), maka akan
mengupdate saldo pada rekening yang
bersangkutan sesuai dengan besar transfer
agus andri putra, ST.
21. Format laporan hasil praktikum
1. Lampirkan dan tulis kembali apa yang telah di lakukan
pada saat praktikum pada file document laporan kalian
2. Kerjakan soal latihan tersebut, dan print screen syntax
maupun hasilnya
3. Lampirkan juga database yang telah dibuat oleh kalian
4. Berikan keterangan yang lengkap pada hasil laporan
kalian
Kirim ke email :
praksibadat@gmail.com
Dengan subject :
Prak_Trig(spasi)nim_nama_kelas
Contoh : Prak_Trig 207700316_agus_IF-A
Batas Pengiriman : Sabtu, 23-11- 2013 pukul 23:59 WIB
agus andri putra, ST.