Melacak eksekusi trigger
Salah satu faktor penting saat memantau trigger adalah memiliki riwayat eksekusinya. Ini memungkinkan Anda mengaitkan waktu antar eksekusi trigger dengan masalah apa pun yang terjadi di database.
Jika waktunya cocok, ada kemungkinan masalah tersebut disebabkan oleh trigger.
SQL Server menyediakan informasi tentang eksekusi trigger apa pun yang saat ini tersimpan di memori pada view sys.dm_exec_trigger_stats. Namun, setelah trigger dikeluarkan dari memori, informasi tentangnya juga hilang dari view tersebut, sehingga Anda kehilangan riwayat eksekusi trigger.
Untuk mengatasi keterbatasan ini, Anda memutuskan menggunakan tabel TriggerAudit untuk menyimpan informasi tentang setiap upaya memodifikasi baris di tabel Orders, karena ada laporan bahwa tabel tersebut sering tidak responsif.
Latihan ini adalah bagian dari kursus
Membangun dan Mengoptimalkan Trigger di SQL Server
Petunjuk latihan
- Ubah trigger
PreventOrdersUpdate. - Atur trigger agar dijalankan ketika baris pada tabel
Ordersdiperbarui. - Tambahkan detail tambahan tentang eksekusi trigger ke dalam tabel
TriggerAudit.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- Modify the trigger to add new functionality
___ TRIGGER PreventOrdersUpdate
ON ___
-- Prevent any row changes
INSTEAD OF ___
AS
-- Keep history of trigger executions
INSERT INTO ___ (TriggerName, ExecutionDate)
SELECT 'PreventOrdersUpdate',
GETDATE();
RAISERROR ('Updates on "Orders" table are not permitted.
Place a new order to add new products.', 16, 1);