Anda di halaman 1dari 13

SISTEM BASIS DATA

PRAKTIKUM 14
TRIGGER

Disusun oleh:
(Nama)
(NIM)

Dosen Pengampu:
Mudafiq Riyan Pratama, S.Kom, M.Kom

PROGRAM STUDI REKAM MEDIK

JURUSAN KESEHATAN
POLITEKNIK NEGERI JEMBER
2019
Praktikum 14
Trigger

Overview

Bab ini menjelaskan mengenai Trigger yang digunakan untuk memanggil satu atau
beberapa perintah SQL secara otomatis saat terjadi proses INSERT, UPDATE, atau
DELETE. Dalam bab ini dijelaskan mengenai definisi trigger, fungsi trigger dan
cara menerapkan membuat dan menghapus trigger.

1. DESKRIPSI MATA KULIAH


Mata Kuliah : Sistem Basis Data
Program Studi : Rekam Medik
Materi : Trigger
SKS : 1 SKS Praktik
Alokasi Waktu : 1 x 120 menit
Dosen Pengampu : Mudafiq Riyan Pratama, S.Kom, M.Kom

2. TUJUAN:
1. Mengetahui definisi dan fungsi dari trigger di MySQL
2. Mampu menerapkan trigger di MySQL dalam beberapa studi kasus

3. DASAR TEORI
A. TRIGGER
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 log
sebelum menghapus data di tabel pelanggan.
Trigger dapat didefinisikan sebagai himpunan kode (prosedural) yang dieksekusi secara
otomatis sebagai respon atas suatu kejadian berkaitan dengan tabel basis data. Berdasarkan
ruang lingkupnya, trigger diklasifikasikan menjadi dua jenis, yaitu:
- Row trigger (trigger baris) mendefinisikan aksi untuk setiap baris tabel.
- Statement trigger, hanya berlaku untuk setiap pernyataan INSERT, UPDATE, atau
DELETE.
Dari sisi perilaku eksekusi, trigger dapat dibedakan menjadi beberapa jenis, namun
umumnya ada dua jenis: Trigger BEFORE dan Trigger AFTER. Sesuai penamaannya, jenis-
jenis tersebut merepresentasikan waktu eksekusi trigger, misalkan sebelum ataukah sesudah
pernyataan yang berkorespondensi.
Apa perbedaan antara trigger dan store procedure? Trigger akan dipanggil secara
otomatis ketika event terjadi, sedangkan store procedure harus dipanggil secara eksplisit.

B. PENGGUNAAN TRIGGER
Trigger dibuat sesuai dengan keperluan. Ada kalanya trigger perlu dibuat, dan kadangkala
tidak perlu dibuat. Kapan trigger perlu dibuat?
- Ketika membentuk sebuah aksi tertentu terhadap suatu event
- Ketika memusatkan operasi global

Kapan trigger tidak perlu dibuat?


- Jika fungsionalitas yang diperlukan sudah ada di DBMS
- Jika duplikat atau sama dengan fungsi trigger yang lain

Prosedur bisa dibuat dalam database, kemudian prosedur tersebut dipanggil pada trigger.
Jika penggunaan trigger terlalu berlebihan, maka akan menyebabkan terjadi sifat
ketidaktergantungan yang terlalu kompleks sehingga akan mempersulit pemeliharaan dari
aplikasi yang benar.
C. MEMBUAT TRIGGER BARU
Berikut ini bentuk umum perintah untuk membuat trigger:

Keterangan:
- BEFORE | AFTER digunakan untuk menentukan kapan proses secara otomatis akan
dieksekusi, sebelum atau sesudah proses.
- INSERT | UPDATE | DELETE digunakan untuk menentukan event yang dijadikan
trigger untuk menjalankan perintah-perintah di dalam trigger.
Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat juga
beberapa perintah sekaligus. Jika terdapat beberapa perintah dalam trigger, maka digunakan
perintah BEGIN dan END untuk mengawali dan mengakhiri perintah.
Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah
proses dengan menggunakan NEW dan OLD. NEW digunakan untuk mengambil record
yang akan diproses (insert atau update), sedangkan OLD digunakan untuk mengakses record
yang sudah diproses (update atau delete).

Berikut ini contoh trigger yang akan mencatat aktivitas ke tabel log setiap terjadi proses
insert ke tabel pelanggan:

D. MENGHAPUS TRIGGER
Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER dengan
diikuti dengan nama tabel dan nama triggernya. Berikut ini bentuk umum dan contoh perintah
untuk menghapus trigger.

Contoh:

4. TOOLS YANG DIGUNAKAN:


1) XAMPP (sebagai paket tools yang tersedia MySQL di dalamnya)
2) MySQL Workbench atau phpmyadmin
5. PRAKTIKUM
Aturan Praktikum:
 Setiap praktikum, mahasiswa wajib mendokumentasikan hasil praktikum dengan
cara screenshot percobaan dan memberi penjelasan di laporan.
 Format nama file laporan: MODUL14_SBD_NIM_GOLONGAN. Contoh:
MODUL14_SBD_G41161320_A.
 Pastikan bahwa service dari MySQL sudah dalam status running pada XAMPP
Control.
 Harap ditanyakan kepada teknisi atau dosen pengampu jika mengalami kesulitan.
 Bagi yang menggunakan komputer laboratorium, DIHARUSKAN MENGHAPUS
database yang telah dibuat.
 Database yang digunakan dalam modul 14 ini menggunakan database siakad.

1) TABEL MAHASISWA
Buatlah tabel sesuai dengan struktur tabel berikut:

SQL Query:
CREATE TABLE `mahasiswa` (
`nim` varchar(10) NOT NULL,
`nama` varchar(30),
`tempatlahir` varchar(10),
`tanggallahir` date,
`alamat` varchar(50),
`nohp` varchar(12),
`email` varchar(15),
`namaayah` varchar(30),
`namaibu` varchar(30),
`password` varchar(100),
PRIMARY KEY (nim)
);

2) TABEL logpasswordmahasiswa
Buatlah tabel dengan nama: logpasswordmahasiswa, dengan struktur tabel berikut:

SQL Query:
CREATE TABLE `logpasswordmahasiswa` (
`idlog` int(4) NOT NULL AUTO_INCREMENT,
`nim` varchar(10) NOT NULL,
`passwordlama` varchar(100) NOT NULL,
`passwordbaru` varchar(100) NOT NULL,
`tanggalubah` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON
UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(idlog)
);

Tabel ini akan kita gunakan untuk menyimpan log history perubahan password dari
mahasiswa.

3) MENGISI TABEL MAHASISWA

SQL Query:
INSERT INTO `mahasiswa` (`nim`, `nama`, `tempatlahir`, `tanggallahir`,
`alamat`, `nohp`, `email`, `namaayah`, `namaibu`, `password`) VALUES
('E31171300', 'Umar', 'Jember', '2001-05-05', 'Jalan Srikoyo 78
Jember', '081112233445', 'umar@gmail.com', 'Khattab', 'Iswayanti',
'semangat45'),
('E31171301', 'Abdurrahman', 'Bondowoso', '2001-06-10', 'Jalan Mawar
89 Bondowoso', '08561122334', 'abdurr@gmail.co', 'Bilal', 'Zainab',
'password'),
('E31171302', 'Khalid', 'Lumajang', '2001-12-11', 'Jalan majapahit 23
Lumajang', '08145453423', 'khalid@yahoo.co', 'Walid', 'Zulaihah',
'password'),
('E31171303', 'Ustman', 'Pasuruan', '2001-02-23', 'Jalan A. Yani 78
Pasuruan', '08144557788', 'ustman@hotmail.', 'Affan', 'Azizah',
'password'),
('E31171304', 'Ali', 'Probolingg', '2001-01-01', 'Jalan Tirta 23
Probolinggo', '08566778899', 'ali@gmail.com', 'Abi Thalib', 'Aisyah',
'password'),
('E31171305', 'Abdullah', 'Situbondo', '2001-12-09', 'Jalan Marga 41
Situbondo', '08143901873', 'abdullah@yahoo.', 'Umar', 'Fatimah',
'password');

4) MEMBUAT TRIGGER LOGPASSWORDMAHASISWA

Trigger tersebut digunakan ketika ada perubahan pada tabel mahasiswa, maka akan merecord
password lama dan password baru pada tabel logpasswordmahasiswa.

5) UBAH PASSWORD SALAH SATU MAHASISWA

Kemudian silahkan periksa isi tabel logpasswordmahasiswa.


6) UBAH DATA NOHP PADA SALAH SATU MAHASISWA

Ternyata meskipun tidak mengubah password, trigger tetap menyimpan perubahan. Berarti
trigger yang kita buat ada kelemahannya. Solusinya bagaimana? Lihat langkah ke 7

7) MENGHAPUS DAN MEMBUAT TRIGGER BARU

Pada trigger tersebut, telah diberi kondisi jika password lama tidak sama dengan password
baru (dalam arti bahwa ada perubahan pada password), maka mengerjakan trigger insert into
logpasswordmahasiswa.

8) PERIKSA HASIL TRIGGER


1. Ubah nomor hp salah satu mahasiswa
2. Periksa isi tabel logpasswordmahasiswa
3. Ubah password salah satu mahasiswa
4. Periksa isi tabel logpasswordmahasiswa, apakah ada perubahan?

9) BUATLAH TRIGGER BARU


1. Buatlah tabel baru untuk mencatat log pada perubahan nomor hp mahasiswa.
2. Kemudian buatlah trigger baru untuk mencatat log perubahan nomor hp mahasiswa pada
tabel log tersebut.
3. Lakukan perubahan data no.hp mahasiswa. Apakah ada error? Jika iya, apa masalahnya?
4. Kerjakan solusi mengatasi masalah nomor 3 di atas!
10) BUATLAH TRIGGER UNTUK MENGHAPUS DATA LOG
1. Sebelum membuat trigger, lakukan perubahan password pada semua data mahasiswa.
2. Kemudian periksa data di tabel logpasswordmahasiswa, apakah tercatat semua log
update nya?
3. Buatlah trigger jika data mahasiswa dihapus dari tabel mahasiswa, maka secara
otomatis juga menghapus data log dari mahasiswa tersebut di tabel
logpasswordmahasiswa.

11) BUATLAH TRIGGER UNTUK MENCEGAH PERUBAHAN DATA NIM


1. Nim merupakan primary key, yang mana tidak diperbolehkan adanya perubahan pada
nim mahasiswa. Oleh sebab itu, buatlah sebuah trigger yang mana jika ada proses
UPDATE pada data nim, maka tidak diperbolehkan, sehingga data nim yang akan
diubah tetap menjadi nim yang lama.

2. UPDATE lah data mahasiswa yang memiliki nim=E31171300 menjadi


nim=123456789.
3. Tampilkan data nim dan nama dari tabel mahasiswa, apakah ada perubahan data pada
nim?

12) LATIHAN 1
12.1 Buatlah tabel rekening untuk menyimpan data rekening nasabah, berisi struktur tabel
sebagai berikut:
- norekening : INT
- namanasabah : VARCHAR
- tempatlahir : VARCHAR
- tanggallahir : DATE
- alamat : VARCHAR
- saldo : INT
12.2 Buatlah tabel transfer untuk menyimpan data transaksi transfer yang struktur
tabelnya sebagai berikut:
- notransaksi : INT AUTO_INCREMENT
- waktutransaksi : DATETIME
- norekpengirim : INT, FK REF rekening(norekening)
- norekpenerima : INT, FK REF rekening(norekening)
- nominaltransfer : INT
12.3 Jika ada penambahan data di tabel transfer (AFTER INSERT ON transfer), maka
akan mengupdate saldo pada tabel rekening yang bersangkutan sesuai dengan
nominaltransfer.

13) LATIHAN 2
13.1 Buatlah tabel produk untuk menyimpan data produk penjualan, berisi struktur tabel
sebagai berikut:
- kodeproduk : INT AUTO_INCREMENT
- namaproduk : VARCHAR
- hargaproduk : INT
- stok : INT
13.2 Buatlah tabel penjualan untuk menyimpan data penjualan produk, yang struktur
tabelnya sebagai berikut:
- idpenjualan : INT AUTO_INCREMENT
- waktutransaksi : TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP
- kodeproduk : INT, FK REF produk(kodeproduk)
- jumlahorder : INT
- totalharga : INT
13.3 Isikan data produk sebagai berikut:

13.4 Buatlah trigger yang berfungsi jika ada penambahan data pada penjualan, maka terjadi
pengurangan stok pada tabel produk. Pengurangan stok terjadi tergantung pada
jumlahorder setiap transaksi.
13.5 buatlah trigger yang berfungsi jika jumlah stok pada tabel produk nilainya 0, maka
tidak dapat melakukan transaksi penjualan (tidak dapat menambahkan data penjualan).

6. KESIMPULAN
(Kesimpulan apa yang dapat anda ambil dari praktikum modul ini?)

Anda mungkin juga menyukai