Laporan Basis Data Modul 6
Laporan Basis Data Modul 6
TRIGGER
ANGGOTA KELOMPOK :
FAKULTAS TEKNIK
APRIL 2016
MODUL VI
TRIGGER
A. TUJUAN
1. Memahami konsep dasar trigger di dalam basis data.
2. Memahami implementasi trigger sebagai bentuk respon atas suatu kejadian.
3. Mampu menyelesaikan kasus-kasus manipulasi data yang kompleks dengan
memanfaatkan trigger.
B. DASAR TEORI
1. Trigger
Trigger dapat didefinisikan sebagai himpunan kode (procedural) yang dieksekusi
secara otomatis sebagai respon atas suatu kejadian berkaitan dengan tabel basis data.
Kejadian (event) yang dapat membangkitkan trigger umumnya berupa pernyataan
INSERT, UPDATE, dan DELETE.
Berdasarkan ruang lingkupnya, trigger diklasifikasikan menjadi dua jenis : row
trigger dan statement trigger. Trigger baris (row) mendefinisikan aksi untuk setiap baris
tabel : trigger pernyataan hanya berlaku untuk setiap pernyataan INSERT, UPDATE,
dan DELETE.
Dari sisi perilaku (behavior) eksekusi, trigger dapat dibedakan menjadi beberapa
jenis; namun umumnya ada dua jenis: trigger BEFORE dan AFTER. Sesuai penamaannya,
jenis-jenis ini merepresentasikan waktu eksekusi trigger-misalnya sebelum ataukah
sesudah pernyataan-pernyataan yang berkorespondensi.
Adakalanya trigger dipandang sebagai bentuk spesifik dari stored procedure
(terkait pendefinisian body). Bagaimanapun, trigger akan dipanggil (secara otomatis)
ketika event terjadi, sedangkan stored procedure harus dipanggil secara eksplisit.
2. Trigger MySQL
MySQL mendukung fitur trigger—termasuk juga stored procedure dan view—
sejak versi 5.0.2. Sebagaimana objek-objek lainnya, trigger diciptakan menggunakan
pernyataan CREATE.
Sintaks pendefinisian trigger diperlihatkan sebagai berikut :
1
MySQL tidak mengizinkan multiple trigger dengan waktu aksi dan event sama
per tabel. Misalkan di tabel A sudah didefinisikan trigger AFTER INSERT, maka kita
tidak boleh mendefinisikan trigger AFTER INSERT lagi; namun AFTER EDIT, AFTER
DELETE, atau BEFORE (INSERT, EDIT, dan DELETE) bisa diterima.
C. LATIHAN
Latihan Praktikum 1
Menggunakan Trigger
Langkah Kerja
1. Buat trigger dengan pernyataan SQL :
2
Latihan Praktikum 2
Keyword OLD dan NEW
a. Trigger INSERT
Langkah Kerja
1. Buat trigger keyword NEW dengan pernyataan SQL :
3
b. Trigger DELETE
Langkah Kerja
1. Buat trigger keyword OLD dengan pernyataan SQL :
4
c. Trigger UPDATE
1. Buat trigger keyword NEW maupun OLD dengan pernyataan SQL :
5
Latihan Praktikum 3
Trigger Kompleks
Pada latihan diatas dilakukan pembuatan tabel barang dan pembelian untuk digunakan
ke operasi selanjutnya. Pada latihan 1 pembuatan trigger diberi nama inkremenStok2
lalu dilakukan penambahan pada tabel barang menggunakan perintah insert dan
melakukan pemanggilan tabel barang dan hasil eksekusi menampilkan 3 data yang ada
pada tabel barang tesebut. Pada latihan 2 terdapat 2 trigger yang dibuat. Untuk yang
pertama pembuatan trigger new dengan pemberian nama trigger updateStok kemudian
terdapat perintah update untuk tabel barang setelah itu, dilakukan pemanggilan pada
tabel barang lalu dilakukan insert pada tabel barang dan melakukan pemanggilan tabel
barang dan hasil eksekusi menampilkan 4 data yang ada pada tabel barang tersebut
kemudian dilakukan penambahan data lagi untuk tabel pembelian dengan perintah insert
selanjutnya dilakukan pemanggilan lagi pada tabel barang dan akan menampilkan
perubahan isi data pada field stok yaitu menjadi bernilai 20. Untuk yang kedua dilakukan
pembuatan trigger old dengan pemberian nama trigger deleteChild kemudian terdapat
perintah delete pada tabel pembelian dan melakukan penyeleksian pada tabel pembelian
selanjutnya dilanjutkan perintah penghapusan dengan perintah delete pada tabel barang
dan yang dihapus adalah data yang bernilai A10 pada field id_brg. Kemudian dilakukan
pemanggilan pada tabel pembelian dan hasilnya akan menampilkan empty set karena
data telah kosong. Selanjutnya melakukan pembuatan trigger dengan memanfaatkan
keyword new dan old dan pembuatan trigger diberi nama updateStokEdit kemudian
dilakukan juga update data pada tabel pembelian selanjutnya melakukan pemanggilan
tabel pembelian setelah di update dan hasilnya menampilkan 1 data yang ada pada tabel
tersebut dan dilakukan pemanggilan juga pada tabel barang yang setelah di update dan
hasilnya akan menampilkan 3 data yang ada pada tabel barang tersebut. Pada latihan 3
adalah pembuatan trigger kompleks dimana triggernya diberi nama auditBarang
kemudian dilakukan penyeleksian pada tabel barang dan hasilnya menampilkan 3 data
pada tabel barang tersebut.
D. TUGAS PRAKTIKUM
1. Modifikasi trigger insert pembelian untuk menambahkan fitur pemberian bonus.
Skenarionya, jika pembelian lebih dari 150 dan kurang dari 250, bonus 15;
pembelian lebih dari 250 atau kurang dari 350, bonus 25; pembelian lebih dari 350,
bonus 50. Ingat, untuk aturan penyesuaian stok barang juga masih berlaku!
6
2. Buat tabel pembayaran dengan field id_pem dan jumlah, kemudian tambahkan
field harga di tabel barang. Modifikasi trigger insert pembelian untuk
menambahkan fitur penghitungan nota pembayaran. Misalkan harga satuan barang
A adalah Rp. 2000 dan terjadi pembelian 15 barang, maka jumlah pembayaran
tercatat Rp. 30000. Ingat, aturan penyesuaian stok barang dan juga pemberian
bonus masih berlaku di sini!
7
3. Buat tabel log_pembelian dengan field waktu dan operasi. Selanjutnya, definisikan
trigger di tabel pembelian untuk merekam operasi Inset, update, dan delete, dan
kemudian menyimpannya sebagai bukti transaksi di tabel log_pembelian
Contoh hasil operasi :
Syntax Insert:
delimiter //
create trigger log_pembelian
before insert on pembelian
for each row
begin
insert into log_pembelian
values (now(), concat('Menambah data dengan id_brg =
',new.id_brg,' sebanyak ',new.jml_beli));
end//
delimiter ;
8
Hasil Insert:
Syntax Update:
delimiter //
create trigger log_update
before update on pembelian
for each row
begin
insert into log_pembelian values
(now(), concat('Ubah data id_brg = ',new.id_brg,' dengan
banyak barang sebelumnya ',old.jml_beli, ' menjadi
',new.jml_beli));
end//
delimiter ;
Hasil Update:
Syntax Delete:
delimiter //
create trigger log_hapus
9
after delete on pembelian
for each row
begin
insert into log_pembelian values
(now(), concat('Hapus data dengan id_pem ',old.id_pem,' dan id_brg
= ', old.id_brg));
end//
delimiter ;
Hasil Delete:
E. TUGAS RUMAH
1. Buat tabel siswa dengan field nis, nama dan status serta tabel daftarnilai dengan
field nis dan nilai. Selanjutnya, definisikan trigger pada tabel daftarnilai,
sehingga saat melakukan insert dan update pada daftarnilai, field status akan
otomatis terisi “LULUS” atau “TIDAK LULUS” dengan ketentuan apabila nilai
< 75 dinyatakan lulus.
Syntax Insert:
delimiter //
create trigger isiLulus
before insert on daftarnilai
for each row
10
begin
declare stat enum('Lulus','Tidak Lulus');
select status into stat from siswa
where nis = new.nis;
if new.nilai >= 75
then set stat = 'Lulus';
else
set stat = 'Tidak Lulus';
end if;
update siswa set status = stat where nis = new.nis;
end//
delimiter ;
Hasil Insert:
Syntax Update:
delimiter //
create trigger updateLulus
after update on daftarnilai
for each row
begin
declare stat enum('Lulus','Tidak Lulus');
select status into stat from siswa
where nis = new.nis;
if new.nilai >= 75
then set stat = 'Lulus';
else
set stat = 'Tidak Lulus';
end if;
update siswa set status = stat where nis = new.nis;
end//
delimiter ;
11
Hasil Update:
2. Buatlah dua tabel dosen_pa (field : id_pa, nama_pa, jml_mhs) dan mahasiswa
(field : nim, nama, id_pa). Kemudian buat trigger pada tabel mahasiswa untuk
menghitung jumlah mahasiswa yang dibimbing oleh masing-masing dosen pa.
Skenarionya, ketika terjadi insert, update dan delete pada tabel mahasiswa, field
jml_mhs pada tabel dosen_pa akan terupdate secara otomatis.
Tabel dosen_pa
Tabel mahasiswa
Syntax Insert:
delimiter //
12
set jml = jml + 1;
update dosen_pa set jml_mhs = jml where id_pa = new.id_pa;
end//
delimiter ;
Hasil Insert:
Syntax update:
delimiter //
delimiter ;
Hasil update :
13
Syntax delete :
delimiter //
delimiter ;
Hasil delete :
14
3. Terdapat 3 tabel mhs, mk dan nilaimhs dengan data seperti di bawah ini :
Tabel mhs :
Tabel mk :
Tabel nilaimhs :
Buatlah trigger untuk tabel nilaimhs agar jika terdapat insert, update, dan delete
pada tabel nilaimhs, maka data pada field ip di tabel mhs secara otomatis
terupdate.
Syntax Insert:
Hasil Insert:
Syntax Update:
Hasil Update:
Syntax Delete:
Hasil Delete:
15
A. KESIMPULAN
1.
B. DAFTAR RUJUKAN
1. Tim Asisten Dosen. 2016. Modul 6 TRIGGER. Malang: Unversitas Negeri
Malang.
2. http://beginner-sql-tutorial.com/id/trigger.htm
3. http://beginner-sql-tutorial.com/id/trigger.htm
16