触发器是在对表进行插入、更新、删除操作时自动执行的存储过程

时间:2021-10-13 03:59:49

触发器是在对表进行插入、更新、删除操纵时自动执行的存储过程,常用于强制业务法则,,是一种高级约束,可以界说比用check约束更为庞大的约束。可以执行庞大的SQL语句(if/while/case

触发器可以界说在特定的表上,与表相关

自动触发执行

不能直接挪用

是一个事务(可以回滚)

触发器的类型

(1) DELETE触发器

(2) INSERT触发器

(3) UPDATE触发器

inserted表和deleted

触发器触发时:

系统自动在内存中创建deleted表或inserted

Deleted表和inserted表都是只读的,不允许改削;触发器执行完成后自动删除

Inserted

姑且生存了删除或更新前的记录行

可以从inserted表中查抄插入的数据是否满足业务需求

如果不满足,则向用户呈报错误动静,并回滚插入操纵

Deleted

姑且生存了删除或更新前的记录行

可以从delered表中查抄被删除的数据是否满足业务需求

如果不满足,则向用户呈报错误动静,并回滚删除操纵

注意:在执行insert操纵时,先创建inserted,将插入的语句放到inserted表中,判断插入语句是否是否切合业务需求,如果不满足就向用户生存错误动静,并回滚插入操纵,如果满足则执行告成.

执行deleted操纵时,先创建deleted,将删除的语句放到deleted表中,判断删除的语句是否切合业务需求,如果不满足就想用户呈报错误信息,并回滚删除操纵,如果满足则执行告成

执行update操纵时,先创建inserted表和deleted,将要改削的表中数据插手deleted表中,

然后将改削后的数据放入inserted表中,判断语句是否切合业务需求,如果不满足就向用户生存错误动静,并回滚插入操纵,如果满足则执行告成.

改削操纵

 

inserted表

 

deleted表

 

增加(INSERT)记录

 

存放新增的记录

 

------

 

删除(DELETE)记录

 

-----

 

存放被删除的记录

 

改削(UPDATE)记录

 

存放更新后的记录

 

存放更新前的记录

 

总结为表如下:

创建触发器

语法:

Create trigger 触发器名称

On 表名

[with encryption]

For[delete/insert/update]

As

T-SQL语句

GO

[with encryption]暗示加密触发器界说的SQL文本

[delete/insert/update]指定触发器的类型

9.insert触发器的使用:

--当向交易信息表(transInfo)中插入一条交易信息时,

--我们应自动更新对应帐户的余额

触发器是在对表进行插入、更新、删除操作时自动执行的存储过程

触发器是在对表进行插入、更新、删除操作时自动执行的存储过程

DELETE触发器的使用:

当删除交易信息表时,要求自动备份被删除的数据到表backupTable中 。

触发器是在对表进行插入、更新、删除操作时自动执行的存储过程

UPDATE触发器的使用

触发器是在对表进行插入、更新、删除操作时自动执行的存储过程

触发器是在对表进行插入、更新、删除操作时自动执行的存储过程

11.UPDATE触发器除了跟踪数据的变革(改削)外,还可以查抄是否改削了某列的数据

使用UPDATE(列)函数检测是否改削了某列

问题:

交易日期一般由系统自动孕育产生,默认为当前日期。为了安适

起见,一般禁止改削,以防舞弊。

触发器是在对表进行插入、更新、删除操作时自动执行的存储过程

触发器还是一个特殊的事务单元,当呈现错误时,可以执行ROLLBACK TRANSACTION回滚勾销操纵

触发器一般都需要使用姑且表:deleted表和inserted表,它们存放了被删除或插入的记录行副本