LAPORAN PRAKTIKUM BASIS DATA MODUL 8 TRI

LAPORAN MODUL VIII

PRAKTIKUM BASIS DATA
Disusun untuk Memenuhi Matakuliah Praktikum Basis Data
Dibimbing oleh Triyanna Widyaningtyas, S.T., M.T.

Oleh:
Eva Yulia Safitri

(160533611462)

Karina Aulia Faradila

(160533611413)

S1 PTI’16 OFF B

UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA

April 2017
1. Judul

TRIGGER
2. Tujuan


Memahami konsep dasar trigger di dalam basis data



Memahami implementasi trigger sebagai bentuk respon atas suatu
kejadian



Mampu menyelesaikan kasus-kasus manipulasi data yang kompleks
dengan memanfaatkan trigger

3. Dasar Teori

1. Trigger
Trigger dapat didefinisikan sebagai himpunan kode (prosedural) 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, atau 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 pernyataanpernyataan 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:

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.

Jenis Trigger
Ada 2 jenis trigger yaitu :
 Application trigger: Terjadi pada saat sebuah kejadian
terjadi dengan aplikasi tertentu.


Database trigger : Terjadi pada saat terjadi sebuah

perubahan data seperti DML pada table (INSERT,
UPDATE atau DELETE)
Keuntungan Trigger

Dalam sebuah tabel dapat mempunyai beberapa trigger. Trigger sangat berguna karena
dapat secara otomatis dilaksanakan
dalam
server,
sehingga
menyederhanakanpemorgraman, sekaligus menjaga konsistensi informasi dalam database
Keuntungan penggunaan Trigger antara lain :
a. Standarisasi (penyeragaman) proses. Trigger dibuat satu kali dan tersimpan
dalamdatabase, sehingga semua client yang menggunakan database tersebut sekaligus
adalah pengguna Trigger. Dengan demikian seluruh client akan menggunakan operasi
yang samaterhadap suatu proses dalam database, karena Trigger yang dipakai sama.
b. Menyederhanakan pemrograman. Apabila Trigger sudah dibuat dalam database
server, seluruh program dalam bahasa apapun, yang mengakses database
tersebut akan secara otomatis menggunakan Triger yang ada tanpa perlu membuat
perintahnya
dalam
program
aplikasi.
c. Mudah diperbaharui. Apabila Trigger pernah di-update dalam database server, semua
client akan menggunakan perbaruan yang terakhir

d. Kecepatan dan efisiensi proses. Oleh karena Trigger disimpan dalam server dalam
kode yang sudah terkompilasi, dan dilaksanakan dalam server sehingga lalu-lintas
jaringan menjadi berkurang.
e. Memudahkan kerja secara tim. Apabila Trigger dan Stored Procedure sudah dibuat,
anggota tim kerja dapat menggunakan bahasa pemrograman yang berbeda dalam
mengaksesnya, karena Trigger disimpan dan dilaksanakan oleh server, tanpa melihat
bahasa pemrograman apa yang dipakai oleh pengguna database.
#Konsep trigger
-Trigger adalah object database yang berisi kumpulan perintah SQL yang akan dieksekusi
atau dijalankan ketika suatu event terjadi.
-Dalam satu database kita dapat mendefinisikan lebih dari satu Trigger, asalkan nama dari
masing masing trigger berbeda.
-Trigger harus berasosiasi dengan tabel tertentu sebagai pemicu trigger untuk menentukan
kapan trigger tersebut dieksekusi.
Trigger memiliki referensi New dan OLD.
#Manfaat menggunakan trigger
- Trigger dapat mengubah nilai kolom pada tabel ini
-Trigger dapat memperoleh nilai lama dari baris data yang telah dihapus atau diubah.

Daftar event untuk aktifasi trigger


Percobaan
Implementasinya pada SQL dan Oracle

4. LATIHAN
Dalam latian ini digunakan dua tabel bernama barang dan pembelian dengan data
sebagai berikut :

Langkah – langkah :
 Tabel barang



Tabel pembelian

1. Menggunakan Trigger
Operasi-operasi berkenaan dengan pendefinisian trigger tidak berbeda dengan
objek-objek database lainnya
a. Masuk kedalam database yang digunakan untuk menciptakan tabel tadi,
kemudian masuk ke menu Trigger


b. Kemudian pilih Add Triger pada bagian New. Dan isikan sesuai dengan
prosedur berikut.

c. Setelah berhasil membuat Trigger. Kembali ke SQL database dan tuliskan
sintak berikut :

d. Dan hasilnya akan seperti berikut

Terlihat bahwa Trigger sudah bekerja seperti yang diharapkan, dimana setiap
penambahan baru akan mengkremen nilai stok
Untuk mendapatkan informasi mengenai daftar Trigger yang telah terdefinisi,
gunakan perintah SHOW TRIGGERS atau bisa langsung ke menu trigger
e. Sebagai objek-objek database lainnya, kita menghapus Trigger denfan
menggunakan perinta DROP
dnegan ketentuan DROP TRIGGER
nama_trigger. Atau bisa langsung ke menu Trigger dan menghapus dengan
cara berikut

2. Keyword OLD dan NEW

Untuk merujuk ke kolom-kolom tabel yang diasosiasikan dengan trigger, kita
menggunakan keyword OLD dan NEW. Keyword OLD mengacu pada nilai lama,
sedangkan NEW merepresentasikan nilai baru. Di trigger INSERT, kita hanya
dapat menggunakan keyword NEW karena tidak ada data lama.

Pada contoh di atas, penambahan data pembelian akan mengakibatkan nilai stok
barang berubah menyesuaikan banyaknya nilai jumlah pembelian.
a. Cek data table barang

b. Kemudian masukkan data kedalam table pembelian

c. Cek kembali data dalam table barang

Untuk kasus trigger DELETE, keyword yang bisa digunakan hanya OLD.
Misalkan kita ingin mendefinisikan trigger untuk menghapus semua data
pembelian manakala data barang yang sesuai—diindikasikan melalui primary key
dan foreign key—dihapus.

a. Sama seperti langkah sebelumnya. Masuk ke menu Trigger


b. Setelah itu, masuk ke table barang untuk menghapus data

c. Kemudian cek data pada table pembelian

Khusus untuk operasi UPDATE, kita bisa memanfaatkan keyword NEW maupun
OLD

a. Update pembelian

b. Tampilkan data pada table barang

3. Trigger Komplek
Keberadaan trigger secara nyata mampu mengatasi berbagai persoalan pelik, misalnya
berkaitan dengan integritas atau audit data. Ini tentu sangat masuk akal, karena trigger
juga bisa mengandung pernyataan- pernyataan yang kompleks termasuk pencabangan,
pengulangan, fungsi-fungsi agregat, bahkan kode pemanggilan prosedur. Sebagai
ilustrasi sederhana, kita bisa mendefinisikan trigger untuk memeriksa operasi
penambahan data barang. Skenarionya, jika data sudah ada, berikan status eksistensi
barang; sebaliknya, data bisa langsung dimasukkan.


5. TUGAS PRAKTIKUM
1. Modifikasi trigger INSERT pembelian untuk menambahkan fitur bonus di
dalamnya. Aturannya adalah jika pembelian > 50 dan < 100, maka bonus = 5; jika
pembelian > 100 dan < 150, maka bonus = 10; jika pembelian > 150, maka bonus
= 20. Ingat, aturan penyesuaian stok barang masih berlaku, setiap ada pembelian
maka stok akan berkurang.
a. Setting stok

Penjelasan :
Pertama kita mensetting stok yang ada sesuai dengan permintaan pada modul. Dimana pada
setting modul kita mengunakan query UPDATE. Contohnya UPDATE barang SET stok =
100 WHERE id_brg = ‘A10’; artinya kita mengupdate dari tabel barang dengan merubah stok
menjadi 100 dimana stok yang memiliki id_brg = A10. Dan begitupun penjelasan untuk
UPDATE barang yang lainnya
b. Tambahan pembelian

Penjelasan :
Pada tambahan pembelian, kita membuat trigger agar penambahan pembelian bisa bertambah
atau berkurang secara otomatis. Pertama kita memasukkan nama triggernya, kemudian
menentukan tabel manakan yang akan kita pakai. Kemudian kita menentukan waktunya ,

yaitu untuk menentukan kapan trigger akan diaktifkan. Pada trigger diatas kita memilih
BEFORE yaitu trigger dijalankan sebelum DML event/kejadian pada tabel. Kemudian kita
menentukan eventnya, karena nantinya akan ada penambahan fitur bonus maka kita
menggunakan INSERT. Lalu kita masuk ke dalam querynya. Pertama BEGIN yaitu untuk
memulai atau awal dari semua query yang akan dijalankan. Kemudian jika kita
menginginkan, jika pembelian >50 dan 50 AND NEW.jml_beli100 dan 100 AND NEW.jml_beli150 maka kita menggunakan ELSEIF (NEW.jml_beli>150) THEN SET
NEW.jml_beli = NEW.jml_beli + 20; karena pengurangan barang pada stok juga
berpengaruh maka kita menggunakan perintah stok = stok – NEW.jml_beli

c. Pembelian akan diberikan bonus

Penjelasan :
Kita akan mencoba apakah trigger yang kita buat berfungsi atau tidak. Sesuai pada modul
kita memasukkan pembelian sejumlah 60. Sesuai aturan pada trigger yang kita buat dimana
untuk pembelian >50 dan