Merupakan lanjutan belajar menggunakan trigger dari pembahasan sebelumnya
Triger adalah kode perintah atau prosedur yang dieksekusi oleh SQL
Server sebagai respons dari beberapa tindakan yang dijalankan yaitu
INSERT, DELETE dan UPDATE.
Jadi saat ada perintah Insert, Delete dan Update trigger secara otomatis akan dijalankan.
Untuk lebih jelasnya langsung kita mulai mencobanya.
Misalnya dalam stok barang di gudang ada tabel dibawah ini.
Pada saat ada transaksi penambahan barang masuk pada table Trans_Masuk
maka secara otomatis trigger akan memerintahkan table stock barang
menambahkan data barangnya.
Demikian juga dengan pengurangan stok barang dilakukan secara otomatis saat ada transaksi keluar.
Buat trigger di tabel Trans_Masuk
CREATE TRIGGER UpdateStock ON Trans_Masuk
FOR INSERT,DELETE, UPDATE AS
BEGIN
declare @Kodebarang as varchar(50)
declare @Qty as int
/*Kurangi data stock jika terjadi Delete atau Update data */
Select @Kodebarang = Kodebarang,@Qty = Qty from Deleted
Update Stock_Barang Set Qty = Qty - @Qty Where KodeBarang = @KodeBarang
/*Cek apakah data barang sudah ada di tabel stock atau belum */
Select @Kodebarang = Kodebarang,@Qty = Qty from inserted
if (select count(*) from Stock_Barang Where Kodebarang = @Kodebarang) = 0
Insert into Stock_Barang Select KodeBarang,Qty from Inserted
else
Update Stock_Barang Set Qty = Qty + @Qty Where KodeBarang = @KodeBarang
END
Mari kita coba dengan menambahkan beberapa data
1. Tambahkan kodebarang BRG-004 sejumlah 25 pcs ke tabel Trans_Masuk
insert into Trans_Masuk values ('IN/1209/005','BRG-004',25,'PCS')
Kita lihat hasilnya pada table stock_barang akan bertambah 25 pcs.
2. Edit KodeBarang BRG-004 dari 25 PCS menjadi 30 PCS
Update Trans_Masuk Set Qty=30 Where KodetransIn='IN/1209/005'
AND KodeBarang='BRG-004' AND Qty=25
Coba cek hasilnya berapa? Kalo stock nya menjadi 32 maka benar triggernya.
3. Tambahkan stock BRG-004 sebanyak 13 PCS
insert into Trans_Masuk values ('IN/1209/006','BRG-004',13,'PCS')
Jika hasilnya adalah 43 maka trigger berjalan benar
Semoga bermanfaat!
kalau data di delete kok stock barangnya tidak terupdate ya, mohon bantuannya gan
ReplyDeleteapa trigernya sudah dibuat? bisa disertakan? triggernya biar lebih jelas?!?
ReplyDeletejadi langkahnya create trigger di tabel transaksi. Pada saat data akan dihapus maka data stock akan berkurang otomatis dengan qty diambil dari tabel deleted.
Select @Kodebarang = Kodebarang,@Qty = Qty from Deleted
Update Stock_Barang Set Qty = Qty - @Qty Where KodeBarang = @KodeBarang
Permisi om, saya mau nanya, disini saya punya 2 table:
ReplyDeletetable_1:
------------------------------------------------------
id | perusahaan | pendapatan | pajak
-----------------------------------------------------
1 | CV. Makmur | 20.000.000 | .......
2 | PT. Asia Jaya | 20.000.000 |.......
3 | PT. DID | 40.000.000 |.......
keterangan:
id (int) (10)
perusahaan (varchar)(30)
pajak (int) (30)
pendapatan (int)(30)
Table_2:
-------------------------------------------------------------
id | code_perusahaan | parameter_pajak
-------------------------------------------------------------
1 | M20006 | 200.000
2 | AJ 20007 | 200.000
3. | DID20008 | 200.000
keterangan:
id (int)(10)
code_perusahaan (varchar)(20)
parameter_pajak (int)30)
Pertanyaannya:
Saya mau melakukan pembagian antara kolom "penghasilan(table_1)" dibagi angka pada kolom "parameter_pajak(table_2)". terus hasilnya akan terinput otomatis ke kolom "pajak(table_1)".
Terus setiap melakukan input/update kolom "penghasilan (table_1)" atau melakukan peruabahan data di "parameter_pajak (table_2)" maka otomatis hasil nilai di kolom "pajak (table_1)" juga akan ikut berubah otomatis.
Mohon pencerahannya om...makasih sebelumnya..