บทนำ

การสร้างและปรับแต่ง Trigger ใน SQL Server

Florin Angelescu

Instructor

Trigger คืออะไร?

  • stored procedure ประเภทพิเศษ
  • ทำงานเมื่อเกิด event ขึ้นในเซิร์ฟเวอร์ฐานข้อมูล

วิธีการทำงานของ Trigger

การสร้างและปรับแต่ง Trigger ใน SQL Server

ประเภทของ trigger (จากคำสั่ง T-SQL)

  • Data Manipulation Language (DML) triggers
    • คำสั่ง INSERT, UPDATE หรือ DELETE
  • Data Definition Language (DDL) triggers
    • คำสั่ง CREATE, ALTER หรือ DROP
  • Logon triggers
    • LOGON events
การสร้างและปรับแต่ง Trigger ใน SQL Server

ประเภทของ trigger (จากพฤติกรรม)

  • AFTER trigger

    • คำสั่งเดิมทำงานก่อน
    • จากนั้นจึงทริกเกอร์คำสั่งเพิ่มเติม
  • ตัวอย่างการใช้งาน

    • สร้าง index ใหม่หลังการ insert ขนาดใหญ่
    • แจ้งเตือนผู้ดูแลระบบเมื่อมีการอัปเดตข้อมูล
การสร้างและปรับแต่ง Trigger ใน SQL Server

ประเภทของ trigger (จากพฤติกรรม)

  • INSTEAD OF trigger

    • ป้องกันไม่ให้คำสั่งเดิมทำงาน
    • เรียกใช้คำสั่งแทนที่แทน
  • ตัวอย่างการใช้งาน

    • ป้องกันการ insert
    • ป้องกันการ update
    • ป้องกันการ delete
    • ป้องกันการแก้ไข object
    • แจ้งเตือนผู้ดูแลระบบ
การสร้างและปรับแต่ง Trigger ใน SQL Server

การกำหนด trigger (ด้วย AFTER)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER ProductsTrigger

-- The trigger needs to be attached to a table ON Products
-- The trigger behavior type AFTER INSERT
-- The beginning of the trigger workflow AS
-- The action executed by the trigger PRINT ('An insert of data was made in the Products table.');
การสร้างและปรับแต่ง Trigger ใน SQL Server

การกำหนด trigger (ด้วย INSTEAD OF)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER PreventDeleteFromOrders
-- The trigger needs to be attached to a table
ON Orders
-- The trigger behavior type
INSTEAD OF DELETE
-- The beginning of the trigger workflow
AS
-- The action executed by the trigger
PRINT ('You are not allowed to delete rows from the Orders table.');
การสร้างและปรับแต่ง Trigger ใน SQL Server

AFTER เทียบกับ INSTEAD OF

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Triggered after 
-- the firing event (UPDATE)
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Triggered instead of 
-- the firing event (UPDATE)
INSTEAD OF UPDATE
AS
{trigger_actions_section};
การสร้างและปรับแต่ง Trigger ใน SQL Server

มาฝึกกันเถอะ!

การสร้างและปรับแต่ง Trigger ใน SQL Server

Preparing Video For Download...