触发器分类
一、定义:
1、触发器是一种特殊类型的存储过程,不同于一般的存储过程。触发器主要是通过事件进行触发被自动调用执行的。
2、触发器对表进行插入、更新、删除的时候回自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上。触发器与普通的存储过程的区别是:触发器是当对某个表进行操作,诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上的触发器
二、分类
触发器分为DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句二激发,这些语句有create,alter,drop语句。
详细介绍DML触发器
- after触发器(之后触发)
1. insert触发器
2. update触发器
3. delete触发器
- instead of触发器(之前触发)
建立过程
1、点击对应的表,选择该表下的触发器,然后新建一个;
2、编写代码
CREATE TRIGGER trugCategoryDelete --触发器名称
ON category --表名
AFTER DELETE --操作(删除,增加,修改)
AS
BEGIN
--具体操作(会将刚刚操作的记录放在一个表里,这里放在“deleted”表中)
select * from deleted --查询刚刚删除掉的记录
END
3、触发的条件:after delete
在删除操作完成之后才会触发。
实例
功能:删除一个类别下的所有新闻以及所有评论
1、新闻类别表category(id,name)
2、新闻表news(id,title,content,createtime,caId)
3、评论表comment(id,content,createtime,userIp,newsId)
ALTER TRIGGER [dbo].[trigCategoryDelete]
ON [dbo].[category]
instead of DELETE
AS
BEGIN
declare @caid int --定义一个变量
select @caid=id from deleted --取出要删除的类别id号
delete comment where newsId in (select newsId from news where caId =@caid) --删除评论
delete news where caId=@caid --先删除该类别的新闻
delete category where id =@caid --删除类别
--delete news where caId =( select id from deleted)
--select *from news
END
[link]https://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html