Postingan lainnya
bagaimana cara buat triger yang benar di MySql Command
mas/mbak mohon bantuan dan panduannya bagaimana cara buat trigger dimysql command versi 8.0 agar supaya ketika kita isi data di tabel pasok terutama jumlah maka di table barang qty nya bertambah,
contoh ditabel barang kode produk 123 qty ada 11 nah pas kita isi di table pasok produk 123 datanya jumlah 5 maka di table barang harusnya bertambah qty jadi 16 karena tadi ada kita input di table pasok produk 123 jumlah 5. ini contoh table yang saya buat:
Tabel Barang
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id_barang | varchar(20) | NO | PRI | NULL | |
| nama_barang | varchar(60) | NO | | NULL | |
| stock | int | NO | | NULL | |
| harga_pokok | double(10,2) | NO | | NULL | |
| harga_jual | double(10,2) | NO | | NULL | |
+-------------+--------------+------+-----+---------+-------+
Tabel Pasok
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id_pasok | varchar(20) | NO | PRI | NULL | |
| id_barang | varchar(20) | YES | MUL | NULL | |
| jumlah | int | YES | | NULL | |
| tanggal | date | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
ini contoh trigger yang saya buat tapi tidak berhasil;
mysql> delimiter //
mysql> create trigger auto_update_barang
-> before update on pasok for each row
-> begin
-> update barang set stock=NEW.jumlah where id_barang=NEW.id_barang;
-> end;
-> //Query OK, 0 rows affected (0.19 sec)Query OK, 0 rows affected (0.62 sec)
Setelah trigger saya buat dan saya coba jalankan tapi hasilnya tidak berubah produk 123 di teble barang Qty masih tetap 11
mysql> insert into pasok values('007',123,5,'2020-09-04');
-> //
Query OK, 1 row affected (0.21 sec)
tapi hasil nya tidak berubah:
catatan:
coba ubah -> before update on pasok for each row ditriggernya menjadi -> after update on pasok for each row tetap juga hasilnya tidak berubah
mysql> select * from barang;
-> //
+-----------+----------------+-------+-------------+------------+
| id_barang | nama_barang | stock | harga_pokok | harga_jual |
+-----------+----------------+-------+-------------+------------+
| 001 | Tas | 19 | 70000.00 | 100000.00 |
| 002 | Sepatu | 30 | 70000.00 | 100000.00 |
| 003 | Sandal | 100 | 40000.00 | 70000.00 |
| 123 | Manisan Jambu | 11 | 15000.00 | 20000.00 |
| 456 | Manisan Pepaya | 100 | 14000.00 | 19000.00 |
| 789 | shampo | 100 | 500.00 | 1000.00 |
+-----------+----------------+-------+-------------+------------+
6 rows in set (0.00 sec)
terima kasih
Salam,
Suhandana
2 Jawaban:
<div>Kenapa tidak jalan? Karena trigger itu ada 6 event, insert update delete (before after). Yang agan buat adalah trigger update sedangkan sql yg agan eksekusi adalah insert into, jadinya gak nyambung.<br><br>Kalo saya untuk stok biasanya pake view, jauh lebih mudah dan efisien. Memang kelihatan aneh, tapi trigger biasanya saya gunakan untuk hal2 yg sangat sederhana, seperti update status pembayaran, karena kalo untuk update stok agak susah, apalagi kalo ada stok opname segala.<br><br>Anggap saja agan udah berhasil bikin trigger insert, stok awal 5 jadi 10. Trus dikemudian hari salah & harus dihapus. Berarti agan harus bikin trigger before delete. Ada lagi kejadian salah input, sehingga qty nya salah dan perlu diubah, agan harus bikin trigger before dan after update. Walaupun trigger kelihatannya lebih masuk akal, tapi tidak efisien.<br><br>Maaf kalau jawabannya bukan seperti yg diharapkan, tetapi disini saya memberikan solusi yang lebih baik.<br><br>Kunjungi juga <a href="https://warkop-it.000webhostapp.com">https://warkop-it.000webhostapp.com</a></div>
Tanggapan
View punya kelemahan dibanding dengan trigger. Kalo trigger langsung update tabel barang, stok ambil dari tabel barang. Kalo view, stok ambil dari tabel pasok. Tabel pasok datanya jauh lebih banyak daripada tabel barang. Untuk data sampe ribuan perbedaan kecepatannya tidak terasa. Cuma kalo datanya jutaan, pasti kelihatan bedanya.
<div>Terima kasih mas masukannya sangat membantu</div>
Tanggapan
Minta bantuannya gan, ini di post di https://warkop-it.000webhostapp.com/index.php/board,39.0.html . Lengkapi dengan script databsenya kalo bisa. Nanti saya bantu bikin scriptnya untuk yg metode view dan trigger.