การติดตามประวัติการทำงานของ trigger
ปัจจัยสำคัญอย่างหนึ่งในการติดตาม trigger คือการมีประวัติการทำงานของ trigger ข้อมูลนี้ช่วยให้เชื่อมโยงช่วงเวลาที่ trigger ทำงานกับปัญหาต่าง ๆ ที่เกิดขึ้นในฐานข้อมูลได้
หากเวลาตรงกัน ก็มีความเป็นไปได้ว่าปัญหาเหล่านั้นเกิดจาก trigger
SQL Server ให้ข้อมูลเกี่ยวกับการทำงานของ trigger ที่ยังคงอยู่ใน memory ผ่าน view ชื่อ sys.dm_exec_trigger_stats แต่เมื่อใดก็ตามที่ trigger ถูกนำออกจาก memory ข้อมูลทั้งหมดของ trigger นั้นจะถูกลบออกจาก view ด้วย ทำให้สูญเสียประวัติการทำงานของ trigger ไป
เพื่อแก้ปัญหานี้ จึงตัดสินใจใช้ตาราง TriggerAudit เพื่อบันทึกข้อมูลเกี่ยวกับทุกครั้งที่มีการพยายามแก้ไขแถวในตาราง Orders เนื่องจากมีรายงานว่าตารางดังกล่าวมักไม่ตอบสนอง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างและปรับแต่ง Trigger ใน SQL Server
คำแนะนำการฝึกหัด
- แก้ไข trigger
PreventOrdersUpdate - กำหนดให้ trigger ทำงานเมื่อมีการอัปเดตแถวในตาราง
Orders - เพิ่มรายละเอียดเกี่ยวกับการทำงานของ trigger ลงในตาราง
TriggerAudit
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- 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);