การตรวจสอบตารางโดยใช้ trigger
บริษัทต้องการติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับตารางสำคัญทั้งหมด โดยหนึ่งในนั้นคือตาราง Orders
การแก้ไขใด ๆ ที่เกิดขึ้นกับข้อมูลในตาราง Orders ควรถูกบันทึกลงใน TablesAudit
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างและปรับแต่ง Trigger ใน SQL Server
คำแนะนำการฝึกหัด
- สร้าง trigger แบบ
AFTERใหม่บนตารางOrders - กำหนดให้ trigger ทำงานสำหรับคำสั่ง
INSERT,UPDATEและDELETE
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Add a trigger that tracks table changes
___ ___ OrdersAudit
ON Orders
___ INSERT, ___, ___
AS
DECLARE @Insert BIT = 0;
DECLARE @Delete BIT = 0;
IF EXISTS (SELECT * FROM inserted) SET @Insert = 1;
IF EXISTS (SELECT * FROM deleted) SET @Delete = 1;
INSERT INTO ___ (TableName, EventType, UserAccount, EventDate)
SELECT 'Orders' AS TableName
,CASE WHEN @Insert = 1 AND @Delete = 0 THEN 'INSERT'
WHEN @Insert = 1 AND @Delete = 1 THEN 'UPDATE'
WHEN @Insert = 0 AND @Delete = 1 THEN 'DELETE'
END AS Event
,ORIGINAL_LOGIN() AS UserAccount
,GETDATE() AS EventDate;