Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Trigger MySQL Update Stock
- sesuia dengan judul, saya akan kasih contoh untuk mengurangi atau menambah stock. kasus kalo ini saya punya sebuah Gudang dimana ada pencatatan stok, pencatatan barang baik masuk maupun keluar. Nah kalo barang keluar maka stok gudang berkurang betul ? sebaliknya kalo barang masuk maka stok gudang bertambah betul lagi tidak ?
- Ok pertama2 kita siapkan dulu tabel untuk pencatatan stok ,masuk dan keluar
- create table stok(
- stok_id int primary key auto_increment,
- stok_nama varchar(5),
- stok_jumlah int
- );
- create table masuk(
- masuk_id int primary key auto_increment,
- stok_id int,
- masuk_jumlah int
- );
- create table keluar(
- keluar_id int primary key auto_increment,
- stok_id int,
- keluar_jumlah int
- );
- Contoh pertama
- di Gudang Stok A = 10, pada hari ini A akan dikeluarkan 7 maka rumusnya adalah A = 10 - 7.maka trigger pada mysql
- DELIMITER //
- CREATE TRIGGER insert_keluar AFTER INSERT ON keluar
- FOR EACH ROW BEGIN
- update stok set stok_jumlah=stok_jumlah-new.keluar_jumlah where stok_id=new.stok_id;
- END
- //
- DELIMITER ;
- kalo dibaca begini : buat trigger dengan nama insert_keluar setelah insert pada tabel keluar untuk setiap barisnya mulai update dan berakhir.
- sekaran coba kita catat/insert pada tabel keluar si A = 7
- INSERT INTO keluar (keluar_id,stok_id,keluar_jumlah) VALUES (1,1,7);
- Maka pada Gudang untuk stok A akan berkurang menjadi 3
- SELECT * FROM stok
- Nah bagaimana dengan Stok A yang masuk ke gudang ? yah namanya barang masuk ke Gudang maka stok bertambah donk, gimana caranya ? tinggal copy paste trigger insert_keluar yang harus diganti : nama trigger,tabel masuk, updatenya adalah tambah
- Contoh Kedua
- Ternyata oh ternyata ada kesalahan pada pencatatan keluar. Jumlah si A yang keluar seharunya 4 bukan 7 !! nah loh .. pegimana nie ? Tenang logikanya harus tau selisih dari kesalahan input dan di masukan kembali ke stok A jadi rumusnya
- selisih = 7 - 4 = 3
- Stok A = 3 + 3 = 6 atau 10 - 4 = 6
- Jadi stok A pada gudang haruslah 6, maka trigger pada mysql
- DELIMITER //
- CREATE TRIGGER update_keluar AFTER UPDATE ON keluar
- FOR EACH ROW BEGIN
- declare a int;
- set a = old.keluar_jumlah - new.keluar_jumlah;
- update stok set stok_jumlah=stok_jumlah+a where stok_id=old.stok_id;
- END
- //
- DELIMITER ;
- sekarang coba kita ubah/update pada tabel keluar si A = 4
- UPDATE keluar SET keluar_jumlah=4 WHERE keluar.keluar_id = 1;
- Maka pada Gudang untuk stok A akan bertambah menjadi 3
- SELECT * FROM stok
- Contoh Ketiga
- dan akhirnya si A tidak jadi keluar. Jumlah si A harus kembali kesemula yaitu 10, maka trigger pada mysql
- DELIMITER //
- CREATE TRIGGER delete_keluar AFTER DELETE ON keluar
- FOR EACH ROW BEGIN
- update stok set stok_jumlah=stok_jumlah+old.keluar_jumlah where stok_id=old.stok_id;
- END
- //
- DELIMITER ;
- sekarang coba kita hapus/delete pada tabel keluar si A = 4
- DELETE FROM keluar WHERE keluar.keluar_id = 1;
- Maka pada Gudang untuk stok A kembali semula
- SELECT * FROM stok
- Nah itu saja pengalaman saya dapat. walaupun sedikit mudah-mudahan bermanfaat.
- Penjelasan OLD dan NEW pada trigger:
- OLD : berisi data sebelum perubahan
- NEW : berisi data sesudah perubahan
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement