Anda di halaman 1dari 19

LAPORAN HASIL PRAKTIKUM

BASIS DATA II
NAMA

: WANDY SUPRIADI

NIM

: DBC 114 121


Nilai

KOMPOSISI
BAB I Tujuan dan Landasan Teori
BAB II Langkah Kerja
BAB III Pembahasan
BAB IV Kesimpulan
BAB V Dafta Pustaka
BAB VI Lampiran
Jumlah

Maksimal
20
10
40
15
5
10
100

NILAI

KELAS

:E

MODUL

: IV

TOPIK

: Trigger

TUJUAN

: Mahasiswa mampu memahami trigger serta penggunaannya


Untuk optimasi sebuah database.

Penilai,
Asisten Praktikum

MEYCELINO A.T.

LABORATORIUM PEMROGRAMAN
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK
UNIVERSITAS PALANGKARAYA
TAHUN 2016

BAB I
TUJUAN DAN LANDASAN TEORI
A. Tujuan :
Mahasiswa mampu memahami trigger serta penggunaannya untuk optimasi
sebuah database
B. Landasan Teori
Menurut Wikipedia, trigger diartikan sebagai procedural code that is
automatically executed in response to certain events on a particular table or view
in a database. Singkatnya,trigger merupakan sekumpulan perintah atau sintaks
yang akan secara otomatis dijalankan jika terjadi operasi tertentu dalam tabel atau
view. Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara
otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE
dari suatu tabel. Sebagai contoh misalnya kita ingin menyimpan id pelanggan
secara otomatis ke tabel logsebelum menghapus data di tabel pelanggan.
Di MySQL, Triggers mulai dikenal di versi MySQL 5.0, dan di versi saat ini
(5.1.4) fungsionalitasnya sudah bertambah. Pada versi selanjutnya pihak
pengembang MySQL berjanji akan lebih menguatkan (menambah) fitur trigger
ini.
Tipe dari trigger adalah :
1. Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan
sebuah aplikasi
2. Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan
data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal
logon atau shutdown) yang terjadi pada sebuah skema atau database.
Trigger sering digunakan, antara lain untuk:
1. Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam
sistem penjualan, jika dientri barang baru maka stock akan bertambah secara
otomatis.
2. Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap
terjadi perubahan, secara otomatis akan menyimpan ke tabel log.

3. Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum
data tersebut disimpan.

BAB II
LANGKAH KERJA

TUGAS :
a) Buat trigger bernama BatalPesan untuk menghapus secara otomatis data pada
tabel tabel Detail Pesan saat record data pada tabel Pembayaran telah dihapus.
b) Buat trigger bernama EditJumlahPemesanan untuk mengedit data pada field
Jumlah Pemesanan ditabel Pembayaran setelah ada perubahan banyaknya item
pemesanan dari tabel Detail Pemesanan.
c) Buat trigger bernama EditNoMeja untuk mengedit data No Meja pada table
Pembayaran setelah ada perubahan data No Meja pada tabel Meja
d)

BAB III
PEMBAHASAN
Berikut pembahasan dari praktikum dengan menggunakan trigger dimana
praktikum ini merapakan kelanjutan dari praktikum yang sebelumnya yang akan
di jelaskan sebagai berikut :
1. Membuat trigger bernama BatalPesan untuk menghapus secara otomatis data
pada tabel Detail Pesan saat record data pada tabel Pembayaran telah dihapus.
dengan nama Trigger Batal Pesan Cara nya pada folder tables klik kanan pada
tabel pembayaran, pilih Create Trigger. Kemudian Masukkan nama Trigger
Batal Pesan pada kotak dialog Create Trigger.

Gambar 3.1. Pembuatan Trigger BatalPesan


Kemudian klik create, maka akan muncul Trigger baru, dengan nama BatalPesan
dan di situ kita akan memasukkan query antarafor each row begin dan end seperti
gambar di bawah ini.

Gambar 3.2 Query Trigger BatalPesan


TRIGGER `BatalPesan` BEFORE DELETE ON `pembayaran`
FOR EACH ROW BEGIN

DELETE FROM detailpesan WHERE nofaktur=Old.nofaktur;


Query di atas digunakan untuk menghapus secara otomatis data pada tabel Detail
Pesan saat record data pada tabel Pembayaran telah dihapus.
DELETE FROM detailpesan WHERE nofaktur=Old.nofaktur;Artinya
menghapus dari record tabel detailpesan, untuk nofaktur yang memiliki record
sama dengan old.nofaktur
Berikut dibawah ini merupakan langkah-langkah yang dilakukan untuk
mengaktifkan trigger:
SELECT * FROM detailpesan;
(digunakan untuk menampilkan record-record yang ada di tabel detailpesan)
SELECT * FROM pembayaran;
(digunakan untuk menampilkan record-record yang ada di tabel pembayaran)
CALL deletepembayaran('3');
(digunakan untuk memanggil procedure delete pembayaran yang sudah di buat
sebelumnya, dimana nilai 3 dalam kurung adalah nopesan dan no faktur yang
akan di hapus. Kedua data ini saling berhubungan, jadi ketika salah satu data
dihapus disini pembayaran dengan no pesan 3 akan menghapus no faktur yang
refering kepada no pesan tersebut, hal ini dapat dimungkinkan dengan adanya
trigger)
SELECT * FROM detailpesan;
(digunakan untuk menampilkan tabel detail pesan, dimana tabel yang tertampil
akan ada perubahan, yaitu terhapus nya data nopesan yang memiliki nilai record
3)
SELECT * FROM pembayaran;
(digunakan untuk menampilkan tabel pembayaran, dimana tabel yang tertampil
akan ada perubahan, yaitu terhapus nya data nofaktur 3).

di bawah ini hasil dari RUN di atas:


SELECT * FROM detailpesan;

Gambar 3.3 Record-record dalam tabeldetailpesan sebelum dilakukan


penghapusan record
SELECT * FROM pembayaran;

Gambar 3.4 Record-record dalam tabel pembayaran sebelum trigger diaktifkan


dari proses penghapusan record dari tabel detailpesan
CALL deletepembayaran('3');
SELECT * FROM detailpesan;

Gambar 3.5Record dari tabel detailpesan setelah dilakukan pemanggilan terhadap


prosedur deletepembayaran
SELECT * FROM pembayaran;

Gambar 3.6 Perubahan record yang terdapat di tabel pembayaran setelah trigger
diaktifkan
Dapat di lihat dari hasil scrennshoot di atas, data no pesan 3 dan nofaktur 3
terhapus setelah ada pemanggilan CALL deletepembayaran('3');karena kedua
data ini saling terhubung.
2. Membuat trigger bernama Edit Jumlah Pemesanan untuk mengedit data pada
field Jumlah Pemesanan ditabel Pembayaran setelah ada perubahan banyaknya

item pemesanan dari tabel Detail Pemesanan. dengan nama Trigger Edit Jumlah
Pemesanan Cara nya pada folder tables klik kanan pada tabel pembayaran, pilih
Create Trigger. Kemudian Masukkan nama Trigger Edit Jumlah Pemesanan
pada kotak dialo Create Trigger.

Gambar 3.7 Pembuatan trigger baru dengan nama EditjumlahPemesanan


Kemudian klik create, maka akan muncul Trigger baru, dengan nama
EditJumlahPemesanan dan di situ kita akan memasukkan Query antara for each
row begin dan end seperti gambar di bawah ini.

Gambar 3.8 Baris Query trigger EditjumlahPemesanan


TRIGGER `EditJumlahPemesanan` AFTER UPDATE ON `pembayaran`
FOR EACH ROW BEGIN
UPDATE pembayaran SET total =(SELECT
SUM(detailpesan.banyak*menu.harga) FROM detailpesan, menu WHERE
pembayaran.nofaktur = detailpesan.nofaktur AND detailpesan.namamenu =
menu.namamenu GROUP BY pembayaran.nofaktur);
Query diatas digunakan untuk mengedit data pada field JumlahPemesanan ditabel
Pembayaran setelah ada perubahan banyaknya item pemesanan dari tabel
DetailPemesanan.

UPDATE pembayaran SET total =(SELECT


SUM(detailpesan.banyak*menu.harga)
FROM detailpesan,
Query diatas artinya untuk mencari total pada tabel pembayaran dengan cara
banyak dari table detailpesan di kali dengan harga dari tabel menu, dimana data
keduanya di ambil dari tabel detail pesan dan menu.
WHERE pembayaran.nofaktur = detailpesan.nofaktur AND
detailPesan.namamenu = menu.namamenu
GROUP BY pembayaran.nofaktur);
Query nofaktur dari tabel pembayaran sama dengan nofaktur dari table detail
pesan dan nama menu dari table detail pesan sama dengan nama menu dari table
menu.
Sekarang kita akan memanggil Trigger dengan cara atau langkah-langkah seperti
di bawah ini :
SELECT * FROM detailpesan;
(digunakan untuk menampilkan record yang terdapat dari kolom-kolom dari tabel
detailpesan)
SELECT * FROM pembayaran;
(digunakan untuk menampilkan record yang terdapat di kolom-kolom tabel
pembayaran)
CALL UpdateDetailPesan('1','1','Sate','12');
(digunakan untuk memanggil memanggil procedure UpdateDetailPesan dimana
('1','1','Sate','12') adalah data baru yang akan di perbaharui kedalam tabel
detailpesan, yaitu banyaknya jumlah pemesanan terhadap item sate = 12)
CALL hitungdiskon;
(digunakan untuk memanggil memanggil procedure hitungdiskon)
CALL hitungtotalpembayaran;
(digunakan untuk memanggil memanggil procedure hitungtotalpembayaran)
SELECT * FROM detailpesan;

(digunakan untuk menampilkan tabel detailpesan, untuk melihat adanya


perubahan melakukan perubahan terhadap tabel DetailPesan)
SELECT * FROM pembayaran;
digunakan untuk menampilkan tabel pembayaran, untuk memastikan apakah
trigger bekerja, dan menggubah juga data record dalam tabel pembayaran).
di bawah ini hasil dari RUN dari baris baris query di atas:

SELECT * FROM detailpesan;

Gambar 3.9 Record yang terdapat dalam tabel detailpesan sebelum dilakukan
proses update
SELECT * FROM pembayaran;

Gambar 3.10 Record yang terdapat didalam tabel pembayaran sebelum


diaktifkannya trigger setelah dilakukan proses update terhadap tabel detailpesan
CALL UpdateDetailPesan('1','1','Sate','12');
CALL hitungdiskon;
CALL hitungtotalpembayaran;
SELECT * FROM detailpesan;

Gambar 3.11 Record yang terdapat di dalam tabel detailpesan setelah dilakukan
proses update
SELECT * FROM pembayaran;

Gambar 3.12 Record yang terdapat di dalam tabel pembayaran setelah dilakukan
pembaharuan dari data pada tabel detailpesan, penghitungan kembali diskon dan
penghitungan kembali total pembayaran
Dapat di lihat dari hasil scrennshoot di atas, data pada tabel detailpesan dan
pembayaran telah diperbaharui.
3. Membuat triggerbernama EditNoMeja untuk mengedit data NoMeja pada table
Pembayaran setelah ada perubahan data No Meja pada tabel Meja. dengan nama
Trigger EditNoMeja Cara nya pada folder tables klik kanan pada tabel
pembayaran, pilih Create Trigger. Kemudian Masukkan nama Trigger
EditNoMeja pada kotak dialog Create Trigger.

Gambar 3.13 Pembuatan trigger baru dengan nama EditNoMeja


Kemudian klik create, maka akan muncul Trigger baru, dengan nama EditNoMeja
dan di situ kita akan memasukkan query diantara for each row begin dan end
seperti gambar di bawah ini:

Gambar 3.14Query dari trigger EditNoMeja


TRIGGER `EditNoMeja` AFTER UPDATE ON `meja`
FOR EACH ROW BEGIN
UPDATE pembayaran SET nomeja = pembayaran.nomeja=meja.nomeja
WHERE nomeja=Old.nomeja;

Baris Query di atas digunakan untuk mengedit data No Meja pada table
Pembayaran setelah ada perubahan data No Meja pad atabel Meja.
UPDATE pembayaran SET nomeja = pembayaran.nomeja=meja.nomeja
WHERE nomeja=Old.nomeja;
Digunakan untuk mengaupdate tabel pembayaran, dimana nomeja sama dengan
pembayaran.nomeja sama dengan meja.nomeja, dimana nomeja sama dengan
old.nomeja.
Seanjutnya melakukan pengaktifan trigger ini, dengan mengikuti langkah-langkah
berikut ini:
SELECT * FROM meja;
(digunakan untuk menampilkan tabel meja)
SELECT * FROM pembayaran;
(digunakan untuk menampilkan record-record yang ada tabel pembayaran)
UPDATE meja SET nomeja='8' WHERE nomeja='2';
(digunakan untuk meng-update atau merubah no meja 2 menjadi no meja 8)
SELECT * FROM meja;
(digunakan untuk menampilkan tabel meja, dimana tabel yang tertampil akan ada
perubahan, yaitu nomeja2telah berubah menjadi 8)
SELECT * FROM pembayaran;
digunakan untuk menampilkan tabel pembayaran, dimana tabel yang tertampil
akan ada perubahan, yaitu nomeja 2 akan berubah menjadi 8).
di bawah ini hasil dari RUN baris query diatas:
SELECT * FROM meja;

Gambar 3.15 Record yang terdapat di tabel meja sbelum dilakukan update data
SELECT * FROM pembayaran;

Gambar 3.16 record yang terdapat di tabel pembayaran sebelum pengaktikan


trigger dari proses update pada record dari tabel meja
UPDATE meja SET nomeja='8' WHERE nomeja='2';
SELECT * FROM meja;

Gambar 3.17 Record data yang terdapat di tabel meja setelah dilakukan proses
update data
SELECT * FROM pembayaran;

Gambar 3.18 Record data yang terdapat di dalam tabel pembayaran setelah
pengaktifan trigger dari proses update pada tabel meja

BAB IV
KESIMPULAN

Maka dapat disimpulkan bahwa penggunaan trigger sangat efektif bagi


pelaku yang mengeluti bidang database/basis data ataupun pengelolaan basis data
itu sendiri. Hal ini, dikarenakan trigger dipakai untuk menyisipkan beberapa
aksi/perintah, dengan deklarasi perintah INSERT, UPDATE, dan DELETE, yang
memungkinkan pengelolaan database menjadi lebih efektif, dan tidak melakukan
pekerjaan yang tidak perlu dikerjakan. Dengan menggunakan trigger, aksi-aksi
yang dianggap penting, dapat langsung dieksekusi saat dilakukan penambahan
data, perubahan data, maupun penghapusan data pada suatu database tertentu
dengan sangat efisien. Biasanya, trigger akan melakukan respon dalam aktivitas
database, setelah sintaks dalam trigger dieksekusi. Aktivitas tersebut digunakan
untuk otomatisasi atau pun validasi.
1. Ada tiga macam trigger timing, yaitu :
BEFORE : trigger dijalankan sebelum DML event pada tabel
AFTER : trigger dijalankan setelah DML event pada table
INSTEAD OF : trigger dijalankan pada sebuah view.

BAB V
DAFTAR PUSTAKA
Christina, Sherly. 2016. Modul Basis Data II Semester Ganjil 2016/2017.

Palangkaraya: Jurusan Teknik Informatika.


http://ilmukomputer.org/wp-content/uploads/2010/09/mohriyan-MySQL2.pdf
Di akses pada hari :

Minggu, 13 November 2016

Pukul 23.12 WIB


.
www.osun.org/contoh+penggunaan+trigger+sql-pdf.html
Di akses pada hari :

Minggu, 13 Oktober 2016

Pukul 23.22 WIB


http://Pengertian.Trigger.View.dan.StoreProcedureberikutcontoh.sintaksnya.htm
Di akses pada hari :
Pukul 20.42 WIB

Senin, 14 Oktober 2016

BAB VI
LAMPIRAN

Gambar 3.1. Pembuatan Trigger BatalPesan

Gambar 3.2 Query Trigger BatalPesan

Gambar 3.3 Record-record dalam tabeldetailpesan sebelum dilakukan


penghapusan record

Gambar 3.4 Record-record dalam tabel pembayaran sebelum trigger diaktifkan


dari proses penghapusan record dari tabel detailpesan

Gambar 3.5 Record dari tabel detailpesan setelah dilakukan pemanggilan terhadap
prosedur deletepembayaran

Gambar 3.6 Perubahan record yang terdapat di tabel pembayaran setelah trigger
diaktifkan

Gambar 3.7 Pembuatan trigger baru dengan nama EditjumlahPemesanan

Gambar 3.8 Baris Query trigger EditjumlahPemesanan

Gambar 3.9 Record yang terdapat dalam tabel detailpesan sebelum dilakukan
proses update

Gambar 3.10 Record yang terdapat didalam tabel pembayaran sebelum


diaktifkannya trigger setelah dilakukan proses update terhadap tabel detailpesan

Gambar 3.11 Record yang terdapat di dalam tabel detailpesan setelah dilakukan
proses update

Gambar 3.12 Record yang terdapat di dalam tabel pembayaran setelah dilakukan
pembaharuan dari data pada tabel detailpesan, penghitungan kembali diskon dan
penghitungan kembali total pembayaran

Gambar 3.13 Pembuatan trigger baru dengan nama EditNoMeja

Gambar 3.14 Query dari trigger EditNoMeja

Gambar 3.15 Record yang terdapat di tabel meja sbelum dilakukan update data

Gambar 3.16 record yang terdapat di tabel pembayaran sebelum pengaktikan


trigger dari proses update pada record dari tabel meja

Gambar 3.17 Record data yang terdapat di tabel meja setelah dilakukan proses
update data

Gambar 3.18 Record data yang terdapat di dalam tabel pembayaran setelah
pengaktifan trigger dari proses update pada

Anda mungkin juga menyukai