关系数据库SQL之可编程性触发器
前言
前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数、存储过程、事务、触发器及游标,前文已介绍了函数、存储过程、事务,本文来介绍一下触发器的使用。(还是以前面的银行系统为例)
概述
触发器(TRIGGER)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( INSERT,DELETE, UPDATE)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。
触发器分为两种:AFTER触发器和INSTEAD OF触发器。
语法
- 创建触发器
CREATE TRIGGER <触发器名称>
ON <表名|视图名>
[AFTER | INSTEAD OF] <INSERT,DELETE,UPDATE>
AS
--SQL语句块
- 修改触发器
ALERT TRIGGER <触发器名称>
ON <表名|视图名>
[AFTER | INSTEAD OF] <INSERT,DELETE,UPDATE>
AS
--SQL语句块
- 删除触发器
DROP TRIGGER <触发器名称>
说明:
- AFTER触发器主要用于在数据表执行INSERT,DELETE, UPDATE操作之后,同时操作其他表。
- INSTEAD OF触发器会替代所要执行的SQL语句,也就是说所要执行SQL并不会真正执行,真正执行的是触发器中定义的操作。
- AFTER触发器只针对表操作,INSTEAD OF触发器除了操作表还可以作用于视图,扩展视图可以支持的更新操作。
- AFTER触发器是在执行SQL之后触发,而INSTEAD OF触发器是在执行SQL之前触发。
- 一个表的INSERT,DELETE, UPDATE操作可以有多个AFTER触发器,有至多一个INSTEAD OF触发器。
特殊表
触发器有两个特殊的表:插入表(instered表)和删除表(deleted表)
示例
1.AFTER触发器示例
在取钱时,交易信息表里面插入交易信息,同时要更改账户表里面的余额
--创建触发器
CREATE TRIGGER Trigger_getMoney
ON TransInfo
AFTER INSERT
AS
declare @cardId varchar(19)
declare @tranMoney money
select @cardId = CardID , @tranMoney = TransMoney from instered;
update CardInfo set LeftMoney = LeftMoney - @tranMoney where CardID = @cardId
GO
--执行插入操作
insert into TransInfo values('1324 3626 7532 1935','取款',500,default);
2.INSTEAD OF触发器
指定的账户"422322001550135015"不可以删除
--创建触发器
CREATE TRIGGER Trigger_deleteAccount
ON AccountInfo
INSTEAD OF DELETE
AS
delete from AccountInfo where CardID != '422322001550135015' AND CardID=(select CardID from deleted)
--执行删除操作
本文就介绍到这里。
如有疑问请联系我。
原文来自:简书
关系数据库SQL之可编程性触发器的更多相关文章
- 关系数据库SQL之可编程性事务
前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数.存储过程,本文来介绍一下事务的使用.(还是以前面的银 ...
- 关系数据库SQL之可编程性存储过程
前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数,本文来介绍一下存储过程的创建.执行.删除.(还是以前 ...
- 关系数据库SQL之可编程性函数(用户自定义函数)
前言 在关系型数据库中除了前面几篇基本的数据库和数据表操作之外,还提供了可编程性的函数.存储过程.事务.触发器及游标. 本文介绍的是函数. 函数分为两种: 系统函数 用户自定义函数 准备工作 这里以银 ...
- SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...
- ORACLE PL/SQL编程之触发器
8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INS ...
- SQL Server数据库(SQL Sever语言 存储过程及触发器)
存储过程:就像函数一样的会保存在数据库中-->可编程性-->存储过程 创建存储过程: 保存在数据库表,可编程性,存储过程create proc jiafa --需要的参数@a int,@b ...
- SQL Sever语言 存储过程及触发器
存储过程:就像函数一样的会保存在数据库中-->可编程性-->存储过程 创建存储过程: 保存在数据库表,可编程性,存储过程create proc jiafa --需要的参数@a int,@b ...
- 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...
- SQL总结(六)触发器
SQL总结(六)触发器 概念 触发器是一种特殊类型的存储过程,不由用户直接调用.创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行. 触发器可以查询其他表,而且可以包含复杂的 S ...
随机推荐
- PHP获取上个月最后一天的一个容易忽略的问题
正常来说,PHP是有一个很方便的函数可以获取上个月时间的 strtotime (PHP 4, PHP 5, PHP 7) strtotime - 将任何英文文本的日期时间描述解析为 Unix 时间戳 ...
- BPM的魅力何在?
BPM(Business Process Management , 企业流程管理平台) 是带动企业流程自动化的帮 手,也是最能忠实反应出企业作业流程问题症结的系统工具,在管理上,BPM可以让管理者利用 ...
- Spark的StandAlone模式原理和安装、Spark-on-YARN的理解
Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...
- 从史上八大MySQL事故中学到的经验
本文列举了史上八大MySQL宕机事件原因.影响以及人们从中学到的经验,文中用地震级数来类比宕机事件的严重性和后果,排在最严重层级前两位的是由于亚马逊AWS宕机故障(相当于地震十级和九级). 一.Per ...
- SVN版本冲突,导致出现Files 的值“ < < < < < < < .mine”无效
只要根据错误提示,找到相应文件夹下的\obj\Debug文件夹下的 相应名字.csproj.FileListAbsolute.txt, 打开并删除含有'<<<<<< ...
- EntityFramework 6 + Mysql 生成POCOs
问题 使用EDMX文件 EF Power Tools参数不正确的解决方法 对于"异常来自 HRESULT:0x80070057 (E_INVALIDARG)",有方法说" ...
- 个人也能申请微信小程序获得APPID和手机测试效果
微信小程序昨晚火爆公测,我也第一时间注册了小程序账号开启公测之旅. 注册过程可以看文档:https://my.oschina.net/imhoodoo/blog/780901 进入后台之后我们其实主要 ...
- 我所理解的SOA和微服务
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p/5847441.html SOA和微服务到底是什么关系? 说实话,我确实不明白SOA和微服务到底有什么本质上 ...
- 高薪诚聘熟悉ABP框架的.NET高级开发工程师(2016年7月28日重发)
招聘单位是ABP架构设计交流群(134710707)群主阳铭所在的公司-上海运图贸易有限公司 招聘岗位:.NET高级开发工程师工作地点:上海-普陀区 [公司情况]上海运图贸易有限公司,是由易迅网的创始 ...
- ABP框架 - 数据过滤
文档目录 本节内容: 简介 预定义过滤 ISoftDelete 何时可用? IMustHaveTenant 何时可用? IMayHaveTenant 何时可用? 禁用过滤 关于using声明 关于多租 ...