SQLServer数据库触发器的创建和使用

6600

编写 SQL Server 数据库的触发器是一个强大的功能,它允许你在执行特定的数据库操作(如 INSERT、UPDATE 或 DELETE)时自动执行一些代码。触发器可以用于数据完整性检查、自动更新相关表、记录数据变更历史等场景,在某站上看到的视频好多都比较模糊,不能看完之后直接知道怎么写,怎么用,还是靠AI去了解到的,下面我将提供一个详细的指南,帮助你理解如何编写和使用 SQL Server 触发器。

1.这就是创建一个触发器(通过命令)

CREATE TRIGGER testin---CREATE TRIGGER创建触发器,testin触发器的名字(随意发挥)

ON students--students--你所要建立触发器的呢个表

AFTER UPDATE --AFTER:操作完成之后执行触发器/INSTEAD OF:替代操作执行触发器一般都使用第一个,INSERT、UPDATE、DELETE:指定触发器响应的数据操作事件,分别是添加时触发,修改时触发,删除时触发

AS

--我的需求是在students被修改的时候,把数据插入到studentsc 这个历史表里,用来展示,所以我这里就是insert,如果你是别的,这里按照正常的sql语句去执行就好了

--因为我这里的语句是insert插入所以在inserted/UPDATE/deleted中生成的虚拟表就是inserted,如果你们是别的就按照这后面对应的找

INSERT INTO studentsc ( name, age,datime)

SELECT name, age ,GETDATE() --GETDATE是我用来获取触发器触发的时间

--着重说一下这里,在创建触发器的时候sqlserver会生成三个虚拟表一个是inserted/一个是UPDATE/deleted ,分别对应添加,修改,删除。

FROM inserted;--删除语句inserted替换为deleted/修改语句替换为UPDATE

--一般两个表都会有主键,在触发器创建的时候切记不要加主键,就是在触发器创建的时候触发器里一定不要加主键

2.看一眼效果吧

(1)

这个是我的第一个表,也是我需要建立触发器的表

(2)

这个是我需要记录修改数据的表

(3)执行一下修改语句

UPDATE students

SET name = 'AlsF', age = 27

WHERE id = 4;

(4)

这是执行修改语句之后的第一个表

(5)

这是执行修改语句之后的修改记录表