Tabel ini tidak bisa dilihat secara langsung melalui perintah
SELECT * FROM DELETED atau SELECT * FROM INSERTED
namun dapat digunakan saat terjadi eksekusi perintah insert, delete ataupun update, biasanya digunakan dalam trigger.
Contoh penggunaanya adalah dalam membuat Log Tabel
Misal Tabel Barang dan kita akan membuat log dari table Trans_Masuk
Setiap
ada transaksi penambahan, perubahan maupun penghapusan data di tabel
Trans_Masuk maka trigger akan menambahkannya ke dalam tabel
Log_Trans_Masuk
Trigger
merupakan sekumpulan kode perintah yang akan berjalan secara otomatis
oleh SQL Server setiap ada eksekusi INSERT, DELETE dan UPDATE, Lihat
pembahasannya di sini
1. Trigger Insert dan Delete dari tabel Inserted dan Deleted
Sekarang kita akan membuat trigger untuk INSERT dan DELETE memanfaatkan tabel Inserted dan Deleted
CREATE TRIGGER InsertLog_Trans_Masuk ON Trans_Masuk
FOR INSERT,DELETE AS
BEGIN
Insert into Log_Trans_Masuk
Select KodeTransIn,KodeBarang,Qty,null,Satuan,'Insert',GETDATE() from Inserted
Insert into Log_Trans_Masuk
Select KodeTransIn,KodeBarang,Qty,null,Satuan,'Delete',GETDATE() from Deleted
END
Sekarang coba masukkan data ke tabel Trans_Masuk misalnya
insert into Trans_Masuk values ('IN/1209/001', 'BRG-001', 17, 'PCS')
Lihat hasilnya di tabel Trans_Masuk dan tabel Log_Trans_Masuk setelah proses Insert data
Nah sekarang lanjutkan dengan proses hapus data
Delete Trans_Masuk where KodeTransIn = 'IN/1209/001' AND KodeBarang = 'BRG-001'
Hasil dari tabel Trans_Masuk dan tabel Log_Trans_Masuk setelah proses Delete data adalah
2. Trigger Update dari tabel Inserted dan Deleted
Untuk Trigger Update sebenarnya melakukan penghapusan data yang lama
kemudian memasukkan data yang baru. Nah untuk itu kita akan memanggil
tabel deleted dan inserted.
Berikut triggernya untuk Update dengan memanfaatkan tabel inserted dan deleted
CREATE TRIGGER InsertLog_Trans_Masuk2 ON Trans_Masuk
FOR UPDATE AS
BEGIN
Insert into Log_Trans_Masuk
Select a.KodeTransIn,a.KodeBarang,a.Qty,b.Qty,a.Satuan,'Update',GETDATE() from Deleted a inner join
Inserted b ON a.KodeTransIn = b.KodeTransIn AND a.KodeBarang = b.KodeBarang
END
Nanti kolom QtyUpdate akan terisi secara otomatis setiap ada perubahan data Qty.
Contoh masukkan data ini terlebih dahulu.
insert into Trans_Masuk values ('IN/1209/002','BRG-002',21,'PCS')
Sekarang ganti nilai Qty dari 21 menjadi 30
Update Trans_Masuk Set Qty=30
where KodeTransIn = 'IN/1209/002' AND KodeBarang = 'BRG-002' AND Qty=21
Sekarang lihat hasilnya di tabel Trans_Masuk dan tabel Log_Trans_Masuk setelah proses Update data
Semoga bermanfaat!
No comments:
Write comments