Assalamualaikum warahmatullahi wabarakatuh
Halooo apa kabar rekan rekan himasis, kembali lagi dengan mimin si pembawa informasiii hehe
Mimin harap rekan rekan selalu dalam keadaan sehat sehat ya, aminnn
Jangan lupa jaga kesehatan, dan jangan lupa untuk terus membaca karena banyak sekali informasi yang didapat dengan membaca. Salah satunya dengan rajin membaca web himasis ini
Yukkk, langsung saja kita simak pemaparan berikut iniii
Cek it!
TRIGGER, apa sih yang terpikirkan ketika mendengar/membaca kata trigger? Trigger merupakan suatu kumpulan script yang terdapat dalam DBMS (Database Management System) yang berhubungan dengan table, view, ataupun skema yang dijalankan secara otomatis ketika terdapat event yang dijalan kan. Event? Ya 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)
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.
Contoh :
1. Kita buat database dengan nama trigger
2. Buat tabel barang_masuk dengan field id_bm(pk), id_barang, tgl_masuk, jumlah
3. Buat tabel barang_keluar dengan field id_bk(pk), id_barang, tgl_keluar, jumlah
4. Buat tabel barang dengan field id_barang(pk), nama_brg, stok
5. Membuat trigger (AFTER INSERT) di phpmyadmin dengan menklik menu trigger, pada tabel barang_keluar
6. Add Trigger
7. Isi
Ket
- trigger_name : nama trigger.
- table : nama table yang saat itu dibuatkan triggernya.
- 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.
- trigger_definition : 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.
Referensi "OLD" dan "NEW"
- 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.
pada trigger definition diawali dengan BEGIN dan diakhiri dengan END
BEGIN
UPDATE barang SET stok = stok - NEW.jumlah
WHERE id_barang = NEW.id_barang;
END
PENJELASAN
barang merupakan nama tabel yang akan mendapatkan dampak dari dibuatnya trigger tersebut
stok merupakan salah satu field yang terdapat dalam tabel barang yang nantinya terjadi perubahan saat tabel barang_keluar diinputkan jumlahnya
stok - NEW.jumlah artinya field stok akan dikurang dengan jumlah baru inputan yang terdapat didalam field jumlah di tabel barang_keluar
id_barang merupakan kode yang menghubungkan kedua tabel (dimana id_barang dalam tabel barang berfungsi sebagai primary key, namun di tabel barang_keluar berfungsi sebagai foreign key)
8. Membuat trigger (AFTER DELETE) pada table barang_keluar
9. Membuat trigger (AFTER INSERT) pada table barang_masuk
10. Membuat trigger(AFTER DELETE) pada tabel barang_masuk
Lalu lakukan uji coba, apabila berhasil maka stok yang ada di tabel barang akan berkurang/bertambah otomatis saat diinputkan data yang terdapat pada tabel barang_masuk ataupun barang_keluar.
Selamat mencoba dan semoga berhasilll
Sekian informasi yang bisa mimin sampaikan, mohon maaf apabila ada salah salah kata
mimin undur diri, sampai bertemu diartikel selanjutnya
SALAMPERUBAHAN
Wassalamualaikum Warahmatullahi Wabarakatuh
Untuk databasenya bisa didownload disini
REFERENSI :
https://www.nesabamedia.com/pengertian-trigger/
http://mysql.phi-integration.com/sql/membuat-trigger-di-mysql