什么是Sql Sever触发器
触发器的概述
触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。触发器可以查询其它表,并可以包含复杂的Transact-SQL语句。
触发器的优点
1.触发器是自动的。当对表中的数据做了任何修改之后立即被激活。
2.触发器可以通过数据库中的相关表进行层叠修改。
3.触发器可以强制限制。这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其他表中的列。
触发器的作用
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂参照完整性和数据的一致性,它能够对数据库中的相关表进行级联修改,提高比CHECK约束更复杂的的数据完整性,并自定义错误消息。触发器的主要作用主要有以下接个方面:
- 强制数据库间的引用完整性
- 级联修改数据库中所有相关的表,自动触发其它与之相关的操作
- 跟踪变化,撤销或回滚违法操作,防止非法修改数据
- 返回自定义的错误消息,约束无法返回信息,而触发器可以
- 触发器可以调用更多的存储过程
触发器的创建
创建触发器用 CREATE TRIGGER
CREATE TRIGGER 触发器名称 ON 表名
FOR INSERT、UPDATE 或 DELETE AS
T-SQL 语句
注意:触发器名称是不加引号的。
触发器的编写
创建以下两表
book
bootype
示例:当Book表新增时,BookType表新增书籍对应的类别的Nums加一
go
create trigger tr_book
on book after insert
as
begin
declare @typeid int
select @typeid=typeid from inserted
update BookType set nums=nums+1 where ID=@typeid
end