Trigger SQL dengan Inserted dan Deleted Table Bag. II
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!