好的,以下是對 T-SQL 觸發器(TRIGGER)的簡單介紹:

什麼是 T-SQL 觸發器?

觸發器是一種特殊的存儲程序,當特定的數據庫事件發生時(如插入、更新或刪除操作),會自動執行。觸發器通常用於強制數據完整性、進行複雜的數據校驗,或自動化某些數據庫操作。

觸發器的類型

  1. AFTER 觸發器(也稱為 FOR 觸發器):在指定的 DML 操作(INSERT、UPDATE、DELETE)之後執行。
  2. INSTEAD OF 觸發器:在指定的 DML 操作(INSERT、UPDATE、DELETE)之前執行,並取代該操作。

創建觸發器

語法

CREATE TRIGGER trigger_name
ON table_name
AFTER | INSTEAD OF INSERT, UPDATE, DELETE
AS
BEGIN
    -- 觸發器執行的 T-SQL 語句
END;

範例

AFTER 觸發器:在 Employees 表上創建一個 AFTER INSERT 觸發器,用於插入記錄到 Audit 表中。

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    EmployeeName NVARCHAR(50)
);

CREATE TABLE Audit (
    AuditID INT IDENTITY PRIMARY KEY,
    AuditAction NVARCHAR(50),
    AuditDate DATETIME
);

CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
    INSERT INTO Audit (AuditAction, AuditDate)
    VALUES ('INSERT', GETDATE());
END;

INSTEAD OF 觸發器:在 Employees 表上創建一個 INSTEAD OF DELETE 觸發器,用於防止刪除操作。

CREATE TRIGGER trgInsteadOfDelete
ON Employees
INSTEAD OF DELETE
AS
BEGIN
    PRINT 'DELETE operation is not allowed.';
END;

使用觸發器

當在 Employees 表上執行插入或刪除操作時,觸發器將自動執行。

插入操作

INSERT INTO Employees (EmployeeID, EmployeeName)
VALUES (1, 'John Doe');

這將觸發 trgAfterInsert,並在 Audit 表中插入一條記錄。