ขั้นตอนแรก ผมจะสร้างเทเบิลมาก่อน 2 เทเบิล โดย Table_A คือตัวที่จะทำการเขียน Triggers ฝังไว้ ส่วน Table_B คือเทเบิลผลลัพธ์ โดยภายในจะมีฟิลด์สองฟิลด์เหมือนกันทั้งสองเทเบิลคือ id Type:int (auto run indentity) และ txt Type:nvarchar(50) แต่ความจริงแล้วการทำ Triggers ไม่ได้จำกัดนะครับว่าเทเบิลจะต้องเหมือนกัน
*** หมายเหตุ *** Type ของฟิลด์ txt เป็น nvarchar(50) ไม่ใช่ text ตามรูปนะครับ
ขั้นที่ 2 ทำการสร้าง Triggers โดยไปที่เทเบิลที่เราต้องการดักจับเหตุการณ์ ตัวอย่าง : Table_A -> Triggers -> คลิกขวา New Triggers...
หลังจากกด New Triggers แล้วจะเห็นโค๊ดดังนี้
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- เป็นชื่อของ Triggers นะครับ แต่ถ้าเราสร้างขึ้นมาแล้ว จะต้องเปลี่ยนจาก CREATE เป็น ALTER นะครับ CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name> -- ส่วนนี้คือส่วนที่บอกว่าจะดักเหตุการณ์ที่เทเบิลไหน ON <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name> -- ในส่วนนี้จะเป็นส่วนที่บอกว่าเราต้องการจะดักจับเหตุการณ์ใด -- สามารถเลือกดักจับพร้อมกันได้ทั้ง 3 เหตุการณ์นะครับ AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE> AS BEGIN -- ส่วนนี้จะเป็นส่วนการเขียนโค๊ดการทำงานต่างๆ -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here END GO
โค๊ดด้านล่างนี้คือโค๊ดตัวอย่าง การทำงานก็คือเมื่อมีการเพิ่มข้อมูลที่เทเบิล A ก็ในนำข้อมูลนั้นไปใส่เทเบิล B ด้วย
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER SnareInsert -- *** EDIT สร้าง Trigger ชื่อ SnareInsert ON dbo.Table_A -- *** EDIT ดักจับเหตุการณ์ที่เทเบิล A AFTER INSERT -- *** EDIT ดักจับเหตุการณ์ INSERT AS BEGIN DECLARE @txtInsert nvarchar(50) -- *** EDIT ประกาศตัวแปรชื่อ txtInsert ประเภท nvarchar(50) SET @txtInsert = (SELECT txt FROM inserted) -- *** EDIT เซ็ตค่าให้ txtInsert เท่ากับค่า txt ที่ Insert เข้ามา -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here INSERT INTO Table_B VALUES (@txtInsert) -- *** EDIT ทำการ Insert ข้อมูลไปที่เทเบิล B END GOผลลัพธ์ : รูปด้านล่างนี้แสดงถึงผลจากการเพิ่มข้อมูล "FromTableA" เข้าสู่ Table_A หลังจากนั้น ก็เพิ่มข้อมูล "FromTableB" เข้าสู่ Table_B สังเกตได้ว่าข้อมูลที่เข้าสู่เทเบิล A จะถูก insert ไปที่เทเบิล B ด้วย