【sql server】SQL触发器
来源:互联网 发布:永清环保怎么样知乎 编辑:程序博客网 时间:2024/05/23 19:15
【是什么】
触发器(Trigger),是SQL Sever提供给程序员和数据分析员来保证数据完整性的一种方法,简单来说就是,触发器是一段由对数据库的更改事件引发的自动执行的代码,也是一种比Check约束更为复杂的高级约束。(有兴趣可以了解一下Check约束)
【作用】
①触发器是一种特殊的存储过程
②也具备事务的功能
③能在多表之间执行特殊的业务规则
【分类】
(一)从引发执行的事件来分
1、DML触发器
DML触发器是由对表进行插入、删除、更改语句引发执行的代码。主要用于实现数据完整性约束和业务规则。
2、DDL触发器
DML触发器是由数据库对象操作语句引发执行的代码,主要用于维护服务器和数据库级对象的安全性
(二)从触发器执行特点来分
1、前触发器(见实例二--牛腩)
前触发性触发器,使用instead of选项定义的触发器为前触发器。这种模式的触发器是只执行触发器语句,而并不真正执行引发触发器执行的操作语句。
2、后触发器(见实例一--机房充值)
后触发型触发器,使用for或after选项定义的触发器为后触发器,即只有在先执行引发触发器操作的语句,并且所有的约束检查也成功完成后,才执行触发器。
【表】
操作Inserted表Deleted表Insert存放新增的记录
Delete
存放被删除的记录
Update存放更新后的记录存放更新前的记录的记录
Delete
存放被删除的记录
Update存放更新后的记录存放更新前的记录的记录
【应用实例】
1、实例一-----机房充值
-- ================================================SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- 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 --将充值后的金额更新至卡表中ENDGO2、实例二-----牛腩:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: 郑艳霞-- Create date: 2015年8月10日18:53:22-- Description:删除类别触发器-- =============================================CREATE TRIGGER trigCategoryDelete ON Category instead of DELETEAS 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=@caIdENDGO【小结】
触发器中还可以加入事务,还可以对某个列的取值范围做限制,还可以提示信息等,有兴趣可以多多尝试。但是触发器还是要合理使用。首先是触发器容易被忽略,给后期维护带来一定的困难;再一个是,触发器必须要在业务和技术上有很高的要求才能不影响业务和性能。现在用的还很少还不成熟,以后多多积累,亲自探究触发器的使用好坏。
0 0
- 【sql server】SQL触发器
- SQL-SERVER触发器
- SQL Server触发器
- Ms SQL Server 触发器
- sql server:触发器
- sql server 触发器
- SQL Server创建触发器
- SQL Server触发器
- SQL Server创建触发器
- SQL Server创建触发器
- Sql Server 触发器(二)
- sql-server 简单触发器
- SQL SERVER 触发器-实例
- SQL Server中的触发器
- SQL Server 触发器
- SQL Server触发器
- SQL Server 触发器
- SQL SERVER触发器实现
- Caffe源码(七):ReLU,Sigmoid and Tanh
- Leetcode -- Remove Duplicates from Sorted List II
- activity 启动模式
- Java学习之路0802(网络通信)
- java初始化顺序
- 【sql server】SQL触发器
- 安装archlinux+cinnamon笔记
- 工厂方法
- 华为OJ(求最大连续bit数)
- K-means 处理 RGB 图像
- java 对新浪微博微博的发表时间解析
- (树型dp,数论)多校7 Mahjong tree
- Android Studio 初次使用
- HDU 1013.Digital Roots【模拟或数论】【8月16】