0% menganggap dokumen ini bermanfaat (0 suara)
77 tayangan7 halaman

Modul Praktikum Basis Data 8

Modul ini membahas tentang trigger di basis data. Trigger adalah kode yang dieksekusi secara otomatis ketika terjadi suatu peristiwa seperti insert, update, dan delete pada tabel database. Modul ini menjelaskan konsep dasar trigger, implementasi trigger di MySQL, dan contoh penggunaan trigger untuk menangani kasus-kasus manipulasi data yang kompleks. Termasuk latihan membuat trigger untuk menyesuaikan stok barang, mencatat pembelian, dan merekam log transaksi.

Diunggah oleh

Destiawan YukiKaze
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
77 tayangan7 halaman

Modul Praktikum Basis Data 8

Modul ini membahas tentang trigger di basis data. Trigger adalah kode yang dieksekusi secara otomatis ketika terjadi suatu peristiwa seperti insert, update, dan delete pada tabel database. Modul ini menjelaskan konsep dasar trigger, implementasi trigger di MySQL, dan contoh penggunaan trigger untuk menangani kasus-kasus manipulasi data yang kompleks. Termasuk latihan membuat trigger untuk menyesuaikan stok barang, mencatat pembelian, dan merekam log transaksi.

Diunggah oleh

Destiawan YukiKaze
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 7

Modul Praktikum Basis Data

MODUL VIII
TRIGGER

A. 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.

B. PETUNJUK
Awali setiap aktivitas dengan doa, semoga berkah dan mendapat kemudahan.
Pahami tujuan, dasar teori, dan latihan-latihan praktikum dengan baik dan benar.
Kerjakan tugas-tugas praktikum dengan baik, sabar, dan jujur.
Tanyakan kepada asisten/dosen apabila ada hal-hal yang kurang jelas.

C. 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 triggermisalnya 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.


Jurusan Teknik Elektro
Fakultas Teknik Universitas Negeri Malang (UM)

51

Modul Praktikum Basis Data

2. Trigger MySQL
MySQL mendukung fitur triggertermasuk juga stored procedure dan
viewsejak versi 5.0.2 Sebagaimana objek-objek lainnya, trigger

diciptakan menggunakan pernyataan CREATE.


Sintaks pendefinisian trigger diperlihatkan sebagai berikut:
CREATE
[DEFINER = { user | CURRENT_USER }]

TRIGGER trigger_name trigger_time trigger_event


ON tbl_name FOR EACH ROW trigger_stmt

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.

D. LATIHAN
Dalam latihan ini digunakan dua buah tabel bernama barang dan pembelian

dengan struktur seperti berikut:


CREATE TABLE barang (
id_brg varchar(5) NOT NULL,
nama_brg varchar(30) NOT NULL,
stok int(5) NOT NULL,
PRIMARY KEY (id_brg)
);
CREATE TABLE pembelian (
id_pem int(5) NOT NULL,
id_brg varchar(5) NOT NULL,
jml_beli int(5) NOT NULL
);

Data yang digunakan adalah sebagai berikut:


Tabel barang
id_brg
A10
A11
A12

nama_brg
Mouse
Keyboard
DVD R-W

stok
20
25
20

Tabel pembelian
id_pem
1

id_brg
A10

jml_beli
5

1. Menggunakan Trigger
Jurusan Teknik Elektro
Fakultas Teknik Universitas Negeri Malang (UM)

52

Modul Praktikum Basis Data

Operasi-operasi berkenaan dengan pendefinisian trigger tidak berbeda


dengan objek-objek database lainnya.
1. Ketikkan pernyataan pembuatan trigger berikut di editor teks.
DELIMITER //
CREATE TRIGGER inkremenStok
BEFORE INSERT ON barang
FOR EACH ROW BEGIN
-- Menambah nilai stok dengan 1
SET NEW.stok = NEW.stok + 1;
END //
DELIMITER ;

Pernyataan di atas memiliki arti untuk menambah nilai stok dengan

nilai satu setiap kali ada penambahan data baru.


2. Eksekusi file trigger (sesuaikan path lokasi penyimpanan file).
3. Berikan perintah untuk menambah data baru, misalnya seperti
berikut:
mysql> INSERT INTO barang
-> VALUES('A13', 'Modem', 5);
Query OK, 1 row affected (0.11 sec)

4. Periksa hasilnya:
mysql> SELECT * FROM barang;
+--------+----------+------+
| id_brg | nama_brg | stok |
+--------+----------+------+
| A10
| Mouse
|
20 |
| A11
| Keyboard |
25 |
| A12
| DVD R-W |
20 |
| A13
| Modem
|
6 |
+--------+----------+------+
4 rows in set (0.00 sec)

Terlihat bahwa trigger sudah bekerja seperti yang diharapkan, di mana

setiap penambahan baru akan menginkremen nilai stok.


Untuk mendapatkan informasi mengenai daftar trigger yang telah
terdefinisi, gunakan perintah SHOW TRIGGERS (tambahkan \G untuk

menampilkan data secara vertikal)

mysql> SHOW TRIGGERS\G


*************************** 1. row ***************************
Trigger: inkremenStok
Event: INSERT
Table: barang
Statement: BEGIN
SET NEW.stok = NEW.stok + 1;
END
Timing: BEFORE
Created: NULL
Jurusan Teknik Elektro
Fakultas Teknik Universitas Negeri Malang (UM)

53

Modul Praktikum Basis Data


sql_mode:
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Definer: didik@localhost
1 row in set (0.02 sec)

Sebagaimana objek-objek database lainnya, kita menghapus trigger


dengan menggunakan perintah DROP.
mysql> DROP TRIGGER inkremenStok;
Query OK, 0 rows affected (0.00 sec)

Untuk memastikan bahwa operasi penghapusan sudah berhasil, periksa

kembali eksistensi trigger.


mysql> SHOW TRIGGERS\G
Empty set (0.02 sec)

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.


Contoh berikut memperlihatkan penggunaan keyword NEW pada trigger

INSERT.
DELIMITER //
CREATE TRIGGER updateStok
AFTER INSERT ON pembelian
FOR EACH ROW BEGIN
-- Update nilai stok barang
UPDATE barang
SET stok = stok + NEW.jml_beli
WHERE id_brg = NEW.id_brg;
END //
DELIMITER ;

Pada contoh di atas, penambahan data pembelian akan mengakibatkan


nilai stok barang berubah menyesuaikan banyaknya nilai jumlah

pembelian.

Jurusan Teknik Elektro


Fakultas Teknik Universitas Negeri Malang (UM)

54

Modul Praktikum Basis Data

20 + 10 = 30

Untuk kasus trigger DELETE, keyword yang bisa digunakan hanya OLD.
Misalkan kita ingin mendefinisikan trigger untuk menghapus semua data
pembelian manakala data barang yang sesuaidiindikasikan melalui

primary key dan foreign keydihapus.


DELIMITER //
CREATE TRIGGER deleteChild
AFTER DELETE ON barang
FOR EACH ROW BEGIN
-- Hapus data pembelian yang berkorespondensi
DELETE FROM pembelian
WHERE id_brg = OLD.id_brg;
-- id_brg pertama merujuk ke tabel pembelian
-- OLD.id_brg merujuk tabel barang
END //
DELIMITER ;

Contoh penggunaan trigger deleteChild diperlihatkan sebagai berikut:

Jurusan Teknik Elektro


Fakultas Teknik Universitas Negeri Malang (UM)

55

Modul Praktikum Basis Data

Khusus untuk operasi UPDATE, kita bisa memanfaatkan keyword NEW


maupun OLD.
DELIMITER //
CREATE TRIGGER updateStokEdit
AFTER UPDATE ON pembelian
FOR EACH ROW BEGIN
-- Update nilai stok barang
UPDATE barang
SET stok = stok + (NEW.jml_beli - OLD.jml_beli)
WHERE id_brg = NEW.id_brg;
END //
DELIMITER ;

3. Trigger Kompleks
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 pernyataanpernyataan yang komplekstermasuk 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.
DELIMITER //
CREATE TRIGGER auditBarang
BEFORE INSERT ON barang
FOR EACH ROW BEGIN
IF NOT EXISTS (SELECT id_brg FROM barang WHERE id_brg =
NEW.id_brg)
Jurusan Teknik Elektro
Fakultas Teknik Universitas Negeri Malang (UM)

56

Modul Praktikum Basis Data


THEN
SET NEW.nama_brg = NEW.nama_brg, NEW.stok = NEW.stok;
ELSE
SET @status = CONCAT('Id ', NEW.id_brg, ' sudah ada');
END IF;
END //
DELIMITER ;

E. 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 dan kurang dari 350, bonus
25; pembelian lebih dari 350, bonus 50. Untuk aturan penyesuaian stok

barang juga masih berlaku. (Point: 30)


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.

(Point: 40)
3.

Buat tabel log_pembelian dengan field waktu dan operasi. Selanjutnya,


definisikan trigger di tabel pembelian untuk merekam operasi INSERT,
UPDATE, dan DELETE, dan kemudian menyimpannyasebagai bukti

transaksidi tabel log_pembelian. (Point: 50)


Contoh hasil operasi:
INSERT: Menambah data bla bla bla...
UPDATE: Mengubah data ... menjadi ..., ... menjadi ...
DELETE: Menghapus data bla bla bla

Note:
Untuk mencegah duplikasi pendefinisian trigger, terlebih dahulu hapus

semua trigger di tabel pembelian.

Jurusan Teknik Elektro


Fakultas Teknik Universitas Negeri Malang (UM)

57

Anda mungkin juga menyukai