Mengenal Pengertian Trigger dalam Database Beserta Fungsi dan Contohnya

Data dapat diubah menjadi suatu informasi yang dibutuhkan menggunakan database. Pada awalnya, data tersebut terdiri dari kumpulan variabel yang akan terganti menjadi informasi menggunakan berbagai perintah eksekusi. Dengan begitu, manajemen database sangat diperlukan untuk menyimpan data tersebut sampai saat data selesai dieksekusi.

Saat ini, sistem manajemen database yang paling populer adalah MySQL. Banyak alasan mengapa banyak pengguna menggunakan MySQL, salah satunya MySQL hampir didukung oleh berbagai bahasa pemrograman yang tersedia saat ini.

Dalam MySQL, suatu database dibuat dengan memanfaatkan fasilitas table. Selain table, MySQL juga dilengkapi dengan salah satu fitur trigger. Lalu, tahukah Anda apa yang dimaksud dengan trigger? Istilah trigger mungkin masih asing didengar. Namun, trigger menjadi kumpulan perintah yang dilakukan apabila terjadi berbagai operasi dalam table.

Pada artikel kali ini, akan dijelaskan mengenai pengertian trigger, fungsi trigger dan beberapa contoh penerapan trigger dalam MySQL. Dengan begitu, Anda jadi lebih mengetahui pembahasan trigger secara detail. Berikut pembahasan pertama mengenai pengertian trigger dibawah ini.

Pengertian Trigger

pengertian trigger dan fungsi trigger

Dalam DBMS (Database Management System), trigger merupakan kumpulan script yang berhubungan dengan table, view ataupun skema yang dijalankan secara otomatis ketika terdapat event yang dijalankan. Event tersebut meliputi operasi yang biasa dilakukan dalam mengolah database, seperti :

  • DML (Data Manipulation Language) yang meliputi DELETE, INSERT atau UPDATE
  • DDL (Data Definition Language) yang meliputi CREATE, ALTER atau DROP
  • Operasi Database lainnya, seperti SERVERERROR, LOGON, LOGOFF, STARTUP atau SHUTDOWN)

Secara sederhana, perintah untuk membuat trigger adalah sebagai berikut :

CREATE TRIGGER nama_trigger [BEFORE|AFTER]
[INSERT/UPDATE/DELETE]
ON nama_table
FOR EACH ROW
BEGIN
// trigger body
END;

Keterangan dari bentuk perintah umum dalam membuat trigger, yaitu :

  • nama_trigger : nama trigger yang dibuat sesuai dengan karakteristik penamaan dalam MySQL
  • [BEFORE|AFTER] : menunjukkan waktu untuk mengeksekusi trigger secara otomatis, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.
  • [INSERT | UPDATE | DELETE] : digunakan untuk menentukan event yang menyebabkan terjadinya trigger, pilIhan event tersebut terdiri dari INSER, UPDATE dan DELETE.
  • nama_table : menunjukkan table yang akan dilakukan trigger didalamnya
  • trigger_body : menunjukkan statement perintah dalam MySQL yang akan otomatis dijalankan jika event sedang aktif.

Pada umumnya, statement yang digunakan dalam trigger hanya berupa satu perintah saja. Namun, jika Anda ingin membuat beberapa perintah di dalamnya, maka gunakan perintah tersebut ke dalam blok BEGIN … END. Penggunaan trigger terjadi ketika adanya perubahan yang terjadi pada record table. Dengan begitu, terdapat Anda perlu menambah referensi ke record tersebut, yaitu OLD dan NEW. OLD menandakan referensi record sebelum terjadinya perubahan, sedangkang OLD menandakan referensi setelah terjadinya perubahan.

Fungsi Trigger

fungsi trigger

Biasanya dalam relasional database, trigger dapat ditemui ketika melakukan perintah eksekusi table. Hal itu menjadi lebih bermanfaat trigger menjaikan penulisan pemrograman yang sederhana dan dapat menjaga informasi agar tetap konsisten dalam database. Selain itu, terdapat beberapa fungsi trigger yang akan dijelaskan dibawah ini.

1. Integritas Data

Dengan adanya trigger, Anda dapat mempertahankan integritas table yang terdapat dalam database. Sebab, Anda dapat melakukan operasi-operasi yang berkaitan dengan pengolahan database, seperti INSERT, UPDATE dan DELETE

2. Mencegah Error

Trigger dalam MySQL dapat mencegah terjadinya error dalam pengoperasian data. Jika terjadi error dalam pendefinisian trigger, error tersebut tidak mengganggu trigger yang sedang berjalan.

3. Membuat Tugas Kerja menjadi Terjadwal

Ketika trigger telah dijalankan, maka Anda dapat menggunakan berbagai bahasa pemrograman tanpa harus bingung bagaimana cara mengaksesnya.

4. Mencegah Proses Transaksi yang Tidak Sah

Dalam praktiknya, biasa trigger digunakan untuk melakukan proses transaksi. Anda dapat menyimpan record transaksi tersebut ke table lain (history) tanpa harus takut jika data tersebut di-update atau delete. Semua perubahan yang terjadi juga dapat diacak berdasarkan waktu pembuatannya.

Contoh Trigger

Setelah Anda memahami pengertian dari trigger beserta fungsinya, Penulis akan memberikan beberapa contoh penerapan dari penggunaan trigger dalam database. Pada umumnya¸ trigger dapat diaktivasi menggunakan event INSERT, UPDATE dan DELETE. Untuk lebih jelasnya, dibawah ini akan dijelaskan mengenai beberapa contoh penerapan dari event tersebut. Namun, Anda harus membuat beberapa tabel dalam database terlebih dahulu.

1. Table Penjualan

CREATE TABLE Penjualan(
id_jual INT(8) NOT NULL AUTO_INCREMENT,
kode_pelanggan VARCHAR(10) NOT NULL,
kode_brg VARCHAR(5),
nama_barang VARCHAR(35),
jumlah INT(6),
harga INT(12),
PRIMARY KEY (id_jual);

2. Table Pembelian

CREATE TABLE Pembelian (
id_beli INT(8) NOT NULL AUTO_INCREMENT,
kode_brg VARCHAR(5),
nama_barang VARCHAR(35),
jumlah INT(6),
harga INT(12),
PRIMARY KEY (id_beli);

3. Table Barang

CREATE TABLE Barang(
id_brg INT(8) NOT NULL AUTO_INCREMENT,
nama_barang VARCHAR(35),
jumlah INT(6),
PRIMARY KEY (id_brg);

Berikut penggunaan trigger yang perlu anda ketahui:

a. Trigger BEFORE INSERT

Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses penambahan (insert) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger
BEFORE INSERT
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;

Sebagai contoh, misalkan Anda ingin memeriksa operasi penambahan data barang yang baru dalam table Barang. Jika barang tersebut telah dimasukkan sebelumnya maka akan mucul peringatan “ID Barang sudah ada”. Maka perintah sederhananya adalah :

CREATE TRIGGER stok_barang
BEFORE INSERT
ON Barang FOR EACH ROW
BEGIN
IF NOT EXIST (SELECT id_brg FROM Barang WHERE id_brg = NEW.id_brg)
THEN
SET NEW.nama_barang = NEW.nama_barang, NEW.jumlah = NEW.jumlah;
ELSE
SET @status = CONCAT(‘ID ‘, NEW.id_brg, ‘ sudah ada’);
END IF;

b. Trigger AFTER INSERT

Trigger ini memiliki fungsi untuk menjalankan tugas trigger setelah proses penambahan (insert) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger
AFTER INSERT
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;

Sebagai contoh, ketika ingin menambahkan data barang yang sudah terjual, maka otomatis jumlah pada table Barang akan berkurang. Maka perintah untuk trigger dalam MySQL adalah

CREATE TRIGGER jual_barang
AFTER INSERT
ON Penjualan FOR EACH ROW
BEGIN
UPDATE barang
SET jumlah = NEW.jumlah
WHERE id_brg = NEW.id_brg,
END;

c. Trigger BEFORE UPDATE

Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses pengubahan (update) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger
BEFORE UPDATE
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;

Misalkan dalam tabel Barang dengan Id_brg = ‘BRG001’ dengan nama_barang = “Piring”. Dengan menggunakan perintah BEFORE UPDATE ini nama barang akan diubah menjadi “Gelas”. Maka perintah yang sesuai untuk kasus diatas adalah :

CREATE TRIGGER barang_baru
BEFORE UPDATE ON BARANG FOR EACH ROW
BEGIN
UPDATE Barang
SET nama_barang = ‘Gelas’
WHERE id_brg =’BRG001′;SET @status = CONCAT(‘Data Barang dengan Id ‘, NEW.id_brg, ‘ sudah diperbarui’);

END;

d. Trigger AFTER DELETE

Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses penghapusan (delete) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger
AFTER DELETE
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;

Misalnya, Anda ingin menghapus record Barang dengan id_brg = ‘BRG001’, nama_barang = ‘ Gelas’. Maka otomatis, stok barang akan bertambah sesuai dengan data barang yang telah dihapus. Berikut mengenai sintaks untuk AFTER DELETE tersebut :

CREATE TRIGGER barang_baru
BEFORE UPDATE ON BARANG FOR EACH ROW
BEGIN
UPDATE Barang
SET jumlah = jumlah + OLD.jumlah
WHERE id_brg = OLD.jumlah;
END;

Itulah pembahasan mengenai pengertian trigger, fungsi beserta contoh penerapan trigger menggunakan MySQL. Penulis berharap artikel diatas membantu Anda untuk memahami dan membuat contoh trigger dengan baik dan benar.

One Response

  1. Avatar ants

Leave a Reply

Send this to a friend