数据库--触发器

触发器:

(1)触发器概念:通过事务来触发某一操作

(2)触发器分类:

①After触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用 Rollback Transaction语句来回滚本次的操作。

②Instead Of触发器:这类触发器一般是用来取代原本的操作,在记录变更之前发生的,它并不去执行原来SQL语句里的操作(Insert、Update、Delete),而去执行触发器本身所定义的操作。

(3)触发器常识:

①在SQL Server里,每个DML触发器都分配有两个特殊的表,一个是Inserted表,一个是Deleted表。它们两个存在于数据库服务器的内存中,是由系统管理的逻辑表,是两个临时表,而不是真正存储在数据库中的物理表。用户对这两个表只有读取的权限,没有修改的权限。

②Inserted和Deleted两个表的作用:
Inserted:对于插入记录操作来说,插入表里存放的是要插入的数据;对于更新记录操作来说,插入表里存放的是要更新的记录。
Deleted:对于更新记录操作来说,删除表里存放的是被更新记录;对于删除记录操作来说,删除表里存入的是被删除的旧记录。
例子:

ALTER    TRIGGER [dbo].[delOrderdrfdetail] ON [dbo].[OrderBill]
FOR delete
AS
delete from OrderDraft where orgsmb_id in (select smb_id from deleted)

AFTER跟FOR相同,不可在视图上定义AFTER触发器,更多时候写的都是for

 

posted @ 2020-11-03 15:18  sriver_dl  Views(175)  Comments(0Edit  收藏  举报