【sql server】SQL触发器

【是什么】
        触发器(Trigger),是SQL Sever提供给程序员和数据分析员来保证数据完整性的一种方法,简单来说就是,触发器是一段由对数据库的更改事件引发的自动执行的代码,也是一种比Check约束更为复杂的高级约束。(有兴趣可以了解一下Check约束)
【作用】
         ①触发器是一种特殊的存储过程
        ②也具备事务的功能
        ③能在多表之间执行特殊的业务规则
【分类】
(一)从引发执行的事件来分
1、DML触发器
       DML触发器是由对表进行插入、删除、更改语句引发执行的代码。主要用于实现数据完整性约束和业务规则。
2、DDL触发器
       DML触发器是由数据库对象操作语句引发执行的代码,主要用于维护服务器和数据库级对象的安全性
(二)从触发器执行特点来分
1、前触发器(见实例二--牛腩)
        前触发性触发器,使用instead of选项定义的触发器为前触发器。这种模式的触发器是只执行触发器语句,而并不真正执行引发触发器执行的操作语句。
2、后触发器(见实例一--机房充值)
        后触发型触发器,使用for或after选项定义的触发器为后触发器,即只有在先执行引发触发器操作的语句,并且所有的约束检查也成功完成后,才执行触发器。
【表】
操作 Inserted表 Deleted表
Insert 存放新增的记录
Delete
存放被删除的记录
Update 存放更新后的记录 存放更新前的记录的记录
【应用实例】
1、实例一-----机房充值
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        郑艳霞
-- Create date: 2015年7月16日15:35:50
-- Description:    充值操作触发器
-- =============================================
CREATE TRIGGER trigRecharge     --触发器名称:trigRecharge
   ON  RechargeLog                    --由RechargeLog表的操作引起
   AFTER  INSERT                        --当上表执行INSERT操作时激活该触发器
AS 
declare                      --声明变量
     @CID varchar(50),
     @Money numeric(18,2)
     select @CID=CID from inserted      --声明@CID的值来源于刚才插入的数据
     select @Money=Money from inserted 
BEGIN
    Update CardInfo set Money=@Money where CID=@CID    --将充值后的金额更新至卡表中
END
GO
2、实例二-----牛腩:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:    郑艳霞
-- Create date: 2015年8月10日18:53:22
-- Description:删除类别触发器
-- =============================================
CREATE TRIGGER trigCategoryDelete 
   ON  Category
   instead of DELETE
AS 
BEGIN
    
    declare @caId int
    select @caId=id from deleted
    --删除评论
    delete comment where newsId in (select newsId from news where caId=@caId)
    --删除新闻
    delete news where caId=@caId 
    --删除类别
    delete category where id=@caId
END
GO
【小结】
        触发器中还可以加入事务,还可以对某个列的取值范围做限制,还可以提示信息等,有兴趣可以多多尝试。但是触发器还是要合理使用。首先是触发器容易被忽略,给后期维护带来一定的困难;再一个是,触发器必须要在业务和技术上有很高的要求才能不影响业务和性能。现在用的还很少还不成熟,以后多多积累,亲自探究触发器的使用好坏。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值