2024年3月9日发(作者:)

在 SQL Server 中,触发器(Trigger)是一种特殊的存储过

程,它会在特定的数据修改操作(如 INSERT、UPDATE 或

DELETE)发生时自动执行。你可以使用触发器来执行各种

任务,如验证数据、执行审计、确保数据完整性等。

在触发器中,你可以使用 INSERTED 和 DELETED 这两个

特殊的表来访问被修改的数据。INSERTED 表包含新插入或

修改后的数据,而 DELETED 表包含被删除或修改前的数据。

以下是一个简单的例子,展示了如何在触发器中使用条件判

断:

假设我们有一个名为 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 来抛出一个错误消息,

告诉用户为什么插入操作被阻止。