Advertisement
gotopa

Trigger MySQL Update Stock

Jan 31st, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. Trigger MySQL Update Stock
  2. 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 ?
  3. Ok pertama2 kita siapkan dulu tabel untuk pencatatan stok ,masuk dan keluar
  4.  
  5. create table stok(
  6. stok_id int primary key auto_increment,
  7. stok_nama varchar(5),
  8. stok_jumlah int
  9. );
  10.  
  11. create table masuk(
  12. masuk_id int primary key auto_increment,
  13. stok_id int,
  14. masuk_jumlah int
  15. );
  16.  
  17. create table keluar(
  18. keluar_id int primary key auto_increment,
  19. stok_id int,
  20. keluar_jumlah int
  21. );
  22.  
  23. Contoh pertama
  24. di Gudang Stok A = 10, pada hari ini A akan dikeluarkan 7 maka rumusnya adalah A = 10 - 7.maka trigger pada mysql
  25.  
  26. DELIMITER //
  27. CREATE TRIGGER insert_keluar AFTER INSERT ON keluar
  28. FOR EACH ROW BEGIN
  29. update stok set stok_jumlah=stok_jumlah-new.keluar_jumlah where stok_id=new.stok_id;
  30. END
  31. //
  32. DELIMITER ;
  33.  
  34. kalo dibaca begini : buat trigger dengan nama insert_keluar setelah insert pada tabel keluar untuk setiap barisnya mulai update dan berakhir.
  35.  
  36. sekaran coba kita catat/insert pada tabel keluar si A = 7
  37. INSERT INTO keluar (keluar_id,stok_id,keluar_jumlah) VALUES (1,1,7);
  38.  
  39. Maka pada Gudang untuk stok A akan berkurang menjadi 3
  40. SELECT * FROM stok
  41.  
  42. 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
  43.  
  44. Contoh Kedua
  45. 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
  46. selisih = 7 - 4 = 3
  47. Stok A = 3 + 3 = 6 atau 10 - 4 = 6
  48.  
  49. Jadi stok A pada gudang haruslah 6, maka trigger pada mysql
  50.  
  51. DELIMITER //
  52. CREATE TRIGGER update_keluar AFTER UPDATE ON keluar
  53. FOR EACH ROW BEGIN
  54. declare a int;
  55. set a = old.keluar_jumlah - new.keluar_jumlah;
  56. update stok set stok_jumlah=stok_jumlah+a where stok_id=old.stok_id;
  57. END
  58. //
  59. DELIMITER ;
  60.  
  61. sekarang coba kita ubah/update pada tabel keluar si A = 4
  62. UPDATE keluar SET keluar_jumlah=4 WHERE keluar.keluar_id = 1;
  63.  
  64. Maka pada Gudang untuk stok A akan bertambah menjadi 3
  65. SELECT * FROM stok
  66.  
  67. Contoh Ketiga
  68. dan akhirnya si A tidak jadi keluar. Jumlah si A harus kembali kesemula yaitu 10, maka trigger pada mysql
  69.  
  70. DELIMITER //
  71. CREATE TRIGGER delete_keluar AFTER DELETE ON keluar
  72. FOR EACH ROW BEGIN
  73. update stok set stok_jumlah=stok_jumlah+old.keluar_jumlah where stok_id=old.stok_id;
  74. END
  75. //
  76. DELIMITER ;
  77.  
  78. sekarang coba kita hapus/delete pada tabel keluar si A = 4
  79. DELETE FROM keluar WHERE keluar.keluar_id = 1;
  80.  
  81. Maka pada Gudang untuk stok A kembali semula
  82. SELECT * FROM stok
  83.  
  84. Nah itu saja pengalaman saya dapat. walaupun sedikit mudah-mudahan bermanfaat.
  85.  
  86. Penjelasan OLD dan NEW pada trigger:
  87. OLD : berisi data sebelum perubahan
  88. NEW : berisi data sesudah perubahan
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement