在 SQL Server 中,触发器(Trigger)是一种特殊的存储过程,它会在特定的数据修改操作(如 INSERT、UPDATE 或 DELETE)发生时自动执行。你可以使用触发器来执行各种任务,如验证数据、执行审计、确保数据完整性等。
在触发器中,你可以使用 INSERTED 和 DELETED 这两个特殊的表来访问被修改的数据。INSERTED 表包含新插入或修改后的数据,而 DELETED 表包含被删除或修改前的数据。
sql触发器的使用
以下是一个简单的例子,展示了如何在触发器中使用条件判断:
假设我们有一个名为 Employees 的表,我们想在每次插入新员工时检查其工资是否低于某个值(例如 2000)。如果是,则触发器会阻止这次插入操作。
sqlCREATE TRIGGER trg_CheckSalary
ON Employees
AFTER INSERT
AS
BEGIN
    -- 检查是否有任何新员工的工资低于 2000
    IF EXISTS (
        SELECT 1
        FROM INSERTED
        WHERE Salary < 2000
    )
    BEGIN
        -- 如果有,则回滚事务,阻止插入
        ROLLBACK TRANSACTION;
        RAISERROR('Cannot insert employees with salary less than 2000.', 16, 1);
    END
END;
在上述触发器中,我们使用了 INSERTED 表来访问新插入的数据,并使用 ROLLBACK TRANSACTION 来撤销这次插入操作。我们还使用了 RAISERROR 来抛出一个错误消息,告诉用户为什么插入操作被阻止。