SQL server数据库之触发器

在SQLserver数据库中触发器中大致分为两种:DDL、DML触发器,即系统触发器与表触发器,系统触发器是对数据库对象进行操作的触发器,表触发器是对表格的增删改时候所进行的触发器。在这里我们就只说表的触发器。

表的触发器也分为两种,分别为:instead of、after(for);分别在表操作之前与表操作之后进行触发。而且两种触发器都有三个触发条件:insert、delete、update。基本语法为:

create trigger tgr_name
on table_name
with encrypion -–加密触发器(一般不用写)
for--触发器类型(如:instead of/after/for)
update--触发类型(如:insert/update/delete)
as
begin
--Transact-SQL
end

触发器是一种特殊类型的存储过程,但它不同于存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。触发器有两个特殊的表:插入表(instered表)和删除表(deleted表)。这两张是逻辑表也是虚表。由系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。其中两张表与触发条件的关系:

  插入表(insered) 删除表(delete)
插入操作(insert) 插入表中存放插入的记录  
修改操作(update) 插入表中存放更新后的记录 删除表中存放更新前的记录
删除操作(delete)   删除表中存放被删除的旧纪录

猜你喜欢

转载自blog.csdn.net/qq_39818210/article/details/81186992