SQL基础:SQL Server的触发器你了解多少

1. 什么是触发器

触发器是一种特殊的存储过程,它会在特定的数据库操作(如插入、更新或删除)发生时自动执行。可以通过创建触发器来执行自定义操作,从而满足业务需求。

在 SQL Server 中,触发器可以在表级别或视图级别创建,可用于保持数据的完整性、强制执行业务规则或记录日志。

2. 创建触发器

2.1 创建表并添加数据

在创建触发器之前,我们需要先创建表并添加一些数据来演示触发器的使用。

CREATE TABLE Employee (

ID INT NOT NULL PRIMARY KEY,

Name VARCHAR(50) NOT NULL,

Age INT NOT NULL,

Salary DECIMAL(10,2) NOT NULL

);

INSERT INTO Employee VALUES (1, '张三', 25, 5000.00);

INSERT INTO Employee VALUES (2, '李四', 30, 8000.00);

INSERT INTO Employee VALUES (3, '王五', 35, 10000.00);

以上代码创建了一个名为 Employee 的表,并添加了三条记录。

2.2 创建触发器

下面我们创建一个名为 Employee_Audit 的触发器,用于记录每次在 Employee 表上的更新。

CREATE TRIGGER Employee_Audit

ON Employee

AFTER UPDATE

AS

BEGIN

INSERT INTO Employee_Audit (ID, Name, Old_Age, New_Age, Old_Salary, New_Salary)

SELECT

ID,

Name,

deleted.Age,

inserted.Age,

deleted.Salary,

inserted.Salary

FROM deleted

INNER JOIN inserted ON deleted.ID = inserted.ID;

END;

以上代码创建了一个触发器,当 Employee 表上执行 UPDATE 操作时,它会自动执行。在执行之前,触发器会将要更新的记录存储在 deleted 虚拟表中,更新后的记录存储在 inserted 虚拟表中,我们可以通过这些虚拟表访问旧值和新值。

在本例中,触发器会将 Employee 表中更新的记录插入到名为 Employee_Audit 的表中,并将旧值和新值分别存储在 Old_Age、New_Age、Old_Salary 和 New_Salary 字段中。

3. 测试触发器

我们可以通过执行以下语句测试触发器是否正常工作:

-- 更新记录

UPDATE Employee SET Age = 26 WHERE ID = 1;

-- 查看更新后的数据

SELECT * FROM Employee;

-- 查看存储在 Employee_Audit 表中的记录

SELECT * FROM Employee_Audit;

以上代码会将 Employee 表中 ID 为 1 的记录的年龄字段从 25 更新为 26,并将旧值和新值存储在 Employee_Audit 表中。

4. 修改和删除触发器

如果我们需要修改触发器,可以使用 ALTER TRIGGER 语句。例如,我们可以修改 Employee_Audit 触发器,使其在插入和删除操作时也执行。

ALTER TRIGGER Employee_Audit

ON Employee

AFTER INSERT, UPDATE, DELETE

AS

BEGIN

-- 触发器代码

END;

如果要删除触发器,可以使用 DROP TRIGGER 语句:

DROP TRIGGER Employee_Audit;

5. 总结

本文介绍了 SQL Server 中触发器的基础知识,包括创建触发器、使用触发器记录数据更新、修改和删除触发器等操作。触发器是 SQL Server 中一个非常强大的功能,能够帮助我们更好地管理数据库。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签