sql触发器(trigger)

触发器分类

一、定义:

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值