Lompat ke konten Lompat ke sidebar Lompat ke footer

Belajar MySQL Part#6 - Cara Membuat dan Menjalankan Trigger di MySQL

Tutorial Hari Ini
Pengantar Trigger Database
Cara Membuat Trigger Database
Menjalankan Trigger Database
Pembahasan Materi Selanjutnya
Penutup

Pengantar Trigger Database
Cara Membuat dan Menjalan Trigger di MySQL merupakan belajar MySQL Lanjut yang wajib dikuasai oleh setiap administrator basis data atau proggrammer dimana untuk melengkapi tutorial sebelumnya yaitu stored procedure.  Halo sahabat semua, jumpa kembali? pada tutorial  cara membuat Trigger Database MySQL. He he he... sahabat semua, apakah masih semangatkah belajar tentang database  MySQL?. Secara tradisional klau petugas Bagian Gudang untuk mengontrol barang yang masuk dan keluar akan dicatat pada sebuah kartu stok, kartu stok ini menggambarkan aktifitas barang masuk dan keluar, apakah petugas Bagian Gudang akan kesulitan...?.
Jadi, Apa itu trigger di MySQL?
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“
Trigger merupakan store procedure atau perintah-perintah sql yang tersiman pada sebuah tabel dan akan dijalankan secara automatis saat user melakukan aktifitas pengelolaan data pada tabel tersebut. Pengelolaan data yang dilakukan pada tabel tersebut sebelum atau sesudat seperti menambah data(insert), mengubah data (update), dan menghapus data(delete). Triggers mulai dikenal pada database MySQL versi 5.0, dan saat ini penulis menggunakan versi 5.7.33.

Cara Membuat Dan Menjalankan Trigger
Trigger adalah stored procedure dari perintah-perintah sql yang akan dijalankan secara otomatis pada saat atau sesudah modifikasi record. Perintah-perintah yang akan mengaktifkan Trigger adalah insert, update, dan delete.
Aturan Penulisan Trigger
Sintaks:
create trigger <nama_trigger> [BEFORE|AFTER] 
[INSERT/UPDATE/DELETE]
ON <nama_table>
FOR EACH ROW
BEGIN
  pernyataan sql(sql statement).
END;
Keterangan:
<nama_trigger>: nama trigger yang dibuat yang akan dijalankan atau dipanggil.
[BEFORE|AFTER]:menyatakankan waktu ketika trigger secara otomatis menjalankan, apakah sebelum atau sesudah ada perubahan data pada table
[INSERT|UPDATE|DELETE]: pernyataan sql digunakan untuk menentukan kejadian (event) pada trigger.
<nama_table>: nama tabel yang akan digunakan pada trigger.
trigger_body: pernyataan perintah-perintah sql (sql statement).
Pernyataan dalam trigger dapat berupa satu perintah atau beberapa perintah sekaligus, setelah perintah dimulai BEGIN dan END untuk mengakhiri perintah.
Di dalam statement trigger, variabel bawaan yang dapat digunakan untuk mengambil/mengakses record adalah variabel NEW dan OLD. Variabel NEW digunakan untuk mengambil/mengakses record sebelum diproses dengan perintah (insert atau update), sementara variabel OLD digunakan untuk mengambil/mengakses record  yang sudah diproses (update atau delete).
Membuat Trigger
Untuk membuat atau contoh trigger akan menggunakan database pada studi kasus puskesmas_db yang sudah dibuat dan dibahas pada tutorial sebelumnya. Untuk lebih memahami materi triger ini ikuti langkah-langkah berikut ini:
Latihan triger akan menggunakan MySQL Client, yaitu SQLyog untuk memudahkan editting bagi pemula.
Langkah-1: Aktifkan aplikasi Database MySQL Pada Laragon.
Klik start pada WindowsØ pilih  Laragon. Selanjutnya aktifkan services database MySQL pada jendela Laragon, melalui dialog layar Laragon, klikØ MenuØ MySQLØ Start MySQL (aplikasi database yang digunakan).  
Langkah-2: Aktifkan SQLyog sebagai MySQL Front.
Klik start pada WindowsØ pilih  SQLyog akan tampil dialog layar, sbb:

Lengkapi dengan mengisi, sbb:
ØMySQL Host Address        : localhost  
Ø User Name                         root 
Ø Password & Database(s) : kosong (setingan defaultnya)
SQLyog akan tampil kembali dialog layar, sbb:
tampilan dialog layar SQLyog siap untuk dioperasikan dengan perintah-perintah sql. 
Langkah-3: Aktifkan Database (use puskesmas), tampilkan tabel-tabelnya (show tables) dan tampilkan semua recordnya (select * from obat), sbb:
Langkah-4: Buat tabel cadangan obat dengan nama tabelnya (obat_buffer) , sbb:
Selanjutnya, salin struktur tabel & perintah insert record pada tabel obat sebelumnya menjadi nama tabelnya obat_buffer tujuannya untuk mendapatkan record yang sama tetapi nama tabelnya berbeda, berikut struktur tabel dan isi recordnya:
create table obat_bufer(kode_obat char(10) primary key,
nama_obat varchar(25),jenis varchar(40),kemasan nchar(30),
harga_obat numeric(12),jumlah_obat numeric(12))

insert into obat_buffer values
('A0001','Ampisilin kaplet 250 mg','Generic','ktk 10 x 10 kaplet',36315,5),
('A0002','Amoksisilin kaplet 500 mg','Generic','ktk 10 x 10 kaplet',49950,2),
('B0001','Betametason tablet 0,5 mg','Generic','ktk 10 x 10 tablet',9446,15),
('E0001','Eritromisin kapsul 250 mg','Generic','ktk 10 x 10 kapsul',68040,10),
('P0001','Parasetamol sirup 120 mg / 5 ml','Generic','btl 60 ml',3105,20),
('P0002','Parasetamol tablet 500 mg','Generic','btl 1000 tablet',67500,25);
tips: kedua perintah sql diatas langsung dapat diblok & dieksekusi secara bergantian.
 
Langkah-5: Membuat TIGGER untuk Menambah Record (After Insert).
Trigger ini berfungsi untuk membackup data ke tabel2, jika tabel obat_buffer yang  ditambah secara automatis tabel obat akan terisi atau sebaliknya jika tabel obat ditambah mengakibatkan tabel obat_buffer akan bertambah juga. Cara membuatnya, sbb:
ØKlik kanan mouse pada tab Trigger , kemudian pilih ØCreate Trigger...
selanjutnya akan tampil dialog layar, kemudian isi nama trigger nya(ObatINSERT) sbb:
selanjutnya pilih Create dan akan tampil struktur trigger nya, kemudian lengkapi pernyataan sqlnya, sbb:
Code lengkapnya, sbb:
DELIMITER $$
DROP TRIGGER /*!50114 IF EXISTS */ `puskesmas_db`.`ObatINSERT`$$
CREATE TRIGGER `puskesmas_db`.`ObatINSERT` AFTER INSERT on `puskesmas_db`.`obat`
FOR EACH ROW BEGIN
INSERT INTO obat_buffer values(new.kode_obat,new.nama_obat,new.jenis, new.kemasan, new.harga_obat,new.jumlah_obat);
END$$
DELIMITER ;
Langkah-6: Pengujian TIGGER dengan Menambah Record.
tambahkan dua record pada tabel obat, sbb:
insert into obat values
('B0002','Bodrexin Sirup Demam Rasa Jeruk [60 ml]','Generic','Botol',1100,2),
('B0003','Bodrexin Paket Anak Syrup - Tidak Berdahak ','Generic','Botol',34100,2)
Selanjutnya tapilkan tabel ke-2 obat_buffer, dengan perintah:
select * from obat_buffer
Langkah-7: Pembuatan TIGGER UPDATE, cara pembuatannya hampir sama.
Code lengkapnya, sbb:
DELIMITER $$
DROP TRIGGER /*!50114 IF EXISTS */ `puskesmas_db`.`ObatUPDATE`$$
CREATE TRIGGER `puskesmas_db`.`ObatUPDATE` AFTER UPDATE on `puskesmas_db`.`obat`
FOR EACH ROW BEGIN
    UPDATE obat_buffer SET nama_obat=new.nama_obat,jenis=new.jenis,
           kemasan=new.kemasan,
           harga_obat=new.harga_obat,jumlah_obat=new.jumlah_obat
    WHERE kode_obat=OLD.kode_obat;             
END$$
DELIMITER ;
Pengujian TIGGER UPDATE, dengan cara, sbb:
UPDATE obat SET jumlah_obat= 20 
WHERE kode_obat='B0002' OR kode_obat='B0003'
selanjutnya periksa dengan perintah;
select * from obat atau select * from obat_buffer
perhatikan perubahan hasilnya akan sama
Langkah-8: Pembuatan TIGGER DELETE, cara pembuatannya hampir sama.
Code lengkapnya, sbb:
DELIMITER $$
DROP TRIGGER /*!50114 IF EXISTS */ `puskesmas_db`.`ObatDELETE`$$
CREATE TRIGGER `puskesmas_db`.`ObatDELETE` AFTER DELETE on `puskesmas_db`.`obat`
FOR EACH ROW BEGIN
DELETE FROM obat_buffer WHERE kode_obat=OLD.kode_obat;
END$$
DELIMITER ;
Pengujian TIGGER DELETEdengan cara, sbb:
DELETE FROM obat
WHERE kode_obat='P0002'
selanjutnya periksa dengan perintah;
select * from obat atau select * from obat_buffer
perhatikan perubahan hasilnya akan sama
Penutup
Sekian pembahasan tutorial hari ini, tentang pembuatan dan pengujian TRIGGER INSERT | UPDATE | DELETE . Selanjutnya akan dibahas fungsi-fungsi bawaan seperti fungsi SUM, AVG, MIN, MAX dll dari Database MySQL ServerSekian dan terima kasih sudah mengikuti terus tutorial di blog ini, semoga bermanfaat, syalam penulis.

Referensi:
I Ketut Darmayuda
I Ketut Darmayuda I Ketut Darmayuda

Posting Komentar untuk "Belajar MySQL Part#6 - Cara Membuat dan Menjalankan Trigger di MySQL"

crossorigin="anonymous">