• Tidak ada hasil yang ditemukan

Cara Membuat Trigger di MySQL

N/A
N/A
Protected

Academic year: 2021

Membagikan "Cara Membuat Trigger di MySQL"

Copied!
6
0
0

Teks penuh

(1)

Cara Membuat Trigger di MySQL

Bayu Lesmana Putra

bayu.zty@gmail.com :: bayu.lesmana@raharja.info

Abstrak

Menurut Wikipedia, trigger dalam database 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 idpelanggan secara otomatis ke tabel ‘log’ sebelum 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. Trigger sering digunakan, antara lain untuk melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam system penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis. Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi perubahan, secara otomatis akan menyimpan ke tabel log. Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data tersebut disimpan.

(2)

Pendahuluan

Beberapa contoh penggunaan trigger yang sangat berguna adalah jika kita ingin melakukan kalkulasi tertentu yang tidak perlu "diketahui" aplikasi luar, mencatat aktivitas operasi table misalkan untuk kepentingan change data capture (CDC) dan sebagainya.

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.

Pembahasan

Kita dapat membuat trigger dengan perintah CREATE TRIGGER. Berikut adalah syntax lengkapnya :

CREATE

[DEFINER = { user | CURRENT_USER }]

TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_body

Keterangan:

trigger_name = nama trigger.

trigger_time = kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE. trigger_event = merupakan event atau peristiwa yang menyebabkan trigger

dilakukan. Pilihan event tersebut adalah: INSERT, UPDATE, DELETE. tbl_name = nama table.

(3)

trigger_body = statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu maka gunakan dalam blok statement BEGIN... END. Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan

hanya oleh user tertentu (dalam format penulisan user@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default.

Karena trigger digunakan pada saat terjadi perubahan row data, maka kita perlu referensi ke row sebelum dan sesudah perubahan. Untuk ini ada dua alias yang berfungsi untuk hal tersebut yaitu OLD dan NEW. Sesuai namanya, OLD digunakan untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan.

Berikut adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE) pada table "tr_penjualan" - database phi_minimart. Tiga langkah yang akan kita lakukan adalah sebagai berikut :

1. Kita akan membuat satu table audit dengan nama "tr_penjualan_hapus" yang berisi row-row yang dihapus dari table "tr_penjualan" dengan tambahan dua field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user).

Berikut adalah perintahnya:

USE phi_minimart;

CREATE TABLE `tr_penjualan_hapus` LIKE `tr_penjualan`; ALTER TABLE `tr_penjualan_hapus` ADD

(

`tgl_perubahan` DATETIME, `nama_user` VARCHAR(200) );

2. Tahap berikutnya adalah membuat trigger yang akan melakukan populasi data yang dihapus dari "tr_penjualan" ke table "tr_penjualan_hapus". Berikut adalah

(4)

DELIMITER |

CREATE TRIGGER hapus_tr_penjualan AFTER DELETE

ON tr_penjualan FOR EACH ROW BEGIN

INSERT INTO tr_penjualan_hapus

( tgl_transaksi, kode_cabang, kode_kasir, kode_item, kode_produk, jumlah_pembelian, tgl_perubahan, nama_user ) VALUES ( OLD.tgl_transaksi, OLD.kode_cabang, OLD.kode_kasir, OLD.kode_item, OLD.kode_produk, OLD.jumlah_pembelian, SYSDATE(), CURRENT_USER ); END; | DELIMITER ;

3. Setelah trigger di atas kita buat, sekarang saatnya kita melakukan pengujian. Coba hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di table "tr_penjualan_hapus". Jalankan perintah berikut:

DELETE FROM tr_penjualan LIMIT 3;

(5)

Terlihat pada gambar diatas 3 row yang dihapus telah"pindah" ke table "tr_penjualan_hapus" dengan tambahan informasi waktu penghapusan dan user yang menghapus.

Penutup

Berdasarkan contoh diatas dapat ditarik kesimpulan sebagai berikut:

Trigger merupakan kumpulan perintah SQL yang secara otomatis dijalankan untuk merespon sebuah perintah tertentu. Biasanya, secara fisik trigger menjadi satu dengan table atau view. Atau bisa juga suatu objek database yang merupakan aksi atau prosedur yang dilakukan jika terjadi perubahan pada row data suatu table. Trigger tidak dapat menjadi bagian dari temporary table atau view.

Referensi

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

(6)

Biografi Penulis

Bayu Lesmana Putra Adalah Lulusan Teknik Komputer, Fakultas Teknologi Informasi Politeknik Harapan Bersama, Tegal (D3, 2012) dan Saat ini sedang menempuh program S1 di STMIK Raharja Tangerang dengan Jurusan Teknik Informatika dengan konsentrasi Software Engineer. Kegiatan sehari-hari adalah sebagai karyawan di sebuah perusahaan swasta dengan posisi IT Engineer. Kegiatan lain sedang belajar programmer, web developer serta sistem jaringan. Penulis dapat dihubungi melalui email di b4yu.zty@gmail dan bayu.lesmana@raharja.co.id, YM b4yu_tk09, Facebook Bayu Lesmana.

Referensi

Dokumen terkait

Dengan Peta Pendaftaran baru yang merupakan revisi dari Peta Pendaftaran yang ada dan sudah berbentuk digital tadi maka peta lama bisa menjadi arsip sementara peta baru

Analisis Kualitas Jasa Listrik Prabayar dengan Mengintegrasikan Metode Servqual dan Quality Function Deployment (Studi Kasus PT. Perusahaan Listrik Negara,

Sedangkan, dilihat dari sisi lingkungan ( environment) masih kurangnya fasilitas toilet terutama toilet pria, ruang tunggu poliklinik penuh dan ruang tunggu apotik panas

Mengumumkan Rencana Umum Pengadaan Barang/Jasa untuk pelaksanaan Kegiatan Tahun Anggaran 2012, seperti tersebut di bawah ini

Penelitian tindakan kelas (PTK) ini menggunakan model penelitian Kurt Lewin. Penelitian ini dilaksanakan dalam dua siklus setiap siklus terdiri dari empat tahapan yaitu:

Sistem yang dibuat telah dapat memberi proteksi dalam penggunaan daya listrik dengan cara memutuskan aliran arus listrik, ketika arus melebihi atau sama dengan arus

Maheu (2001) juga mendefenisikan cybersex dimana terjadi ketika orang menggunakan komputer yang berisi tentang teks, suara dan gambar yang didapatkan dari software atau

berkembangbiak dalam tubuh serangga inang sampai menghasilkan keturunan yang sangat banyak. Contoh nematoda yang sering digunakan untuk pengendalian hayati adalah: