SQL中触发器实例讲解(转)
SQL中触发器实例讲解
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件。(SQL Server 2000定义了新的触发器,这里不提)
我为什么要使用触发器?比如,这么两个表:
Create Table Student( --学生表
StudentID int primary key, --学号
....
)
Create Table BorrowRecord( --学生借书记录表
BorrowRecord int identity(1,1), --流水号
StudentID int , --学号
BorrowDate datetime, --借出时间
ReturnDAte Datetime, --归还时间
...
)
用到的功能有:
1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
等等。
这时候可以用到触发器。对于1,创建一个Update触发器:
Create Trigger truStudent
On Student --在Student表中创建触发器
for Update --为什么事件触发
As --事件触发后所要做的事情
if Update(StudentID)
begin
Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表
Where br.StudentID=d.StudentID
end
理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
虚拟表Inserted 虚拟表Deleted
在表记录新增时 存放新增的记录 不存储记录
修改时 存放用来更新的新记录 存放更新前的记录
删除时 不存储记录 存放被删除的记录
一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。
对于2,创建一个Delete触发器
Create trigger trdStudent
On Student
for Delete
As
Delete BorrowRecord
From BorrowRecord br , Delted d
Where br.StudentID=d.StudentID
从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。
这里我们只讲解最简单的触发器。复杂的容后说明。
事实上,我不鼓励使用触发器。触发器的初始设计思想,已经被“级联”所替代
转载于:https://www.cnblogs.com/cooolbin/archive/2008/02/27/1083431.html
SQL中触发器实例讲解(转)相关推荐
- SQL server 触发器实例讲解
SQL触发器实例讲解(本文是来自百度文库) 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常 ...
- python3连接sql server数据库_Python3操作SQL Server数据库(实例讲解)
1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话,实用性就不那么大了. 2.最基本的SQL查询语句 python是使用pymssql这个模 ...
- python调用sql数据库_Python3操作SQL Server数据库(实例讲解)
1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话,实用性就不那么大了. 2.最基本的SQL查询语句 python是使用pymssql这个模 ...
- Spark SQL 中UDF的讲解
Spark SQL 中UDF的讲解 User Define Function, 用户自定义函数,简称UDF,存在与很多组件中. 在使用Sparksql的人都遇到了Sparksql所支持的函数太少了的难 ...
- SQL触发器实例讲解1
SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应 ...
- SQL触发器实例讲解
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , ...
- SQL触发器实例讲解(本文是来自百度文库)
我想记录每个商品的点击量,然后按照点击量来牌名商品,想要提高效率,所以必须得用触发器,下面是本人在百度文库中的找到的学习资料,分享下给大家. 定义: 何为触发器?在SQL Server里面也就是对某一 ...
- SQL触发器实例讲解(转)
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , ...
- SQL Server 触发器 详细讲解
最近在做微信活动,需要用到存储过程,在网上找了下感觉使用触发器更好些,和大家分享下 希望对你有用. 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动 ...
最新文章
- 利用Use Case为系统行为建模(1)
- 针对IE6\7\8\9\10浏览器的CSS hack大全详解
- js在for循环中绑定事件
- [Python人工智能] 二十八.Keras深度学习中文文本分类万字总结(CNN、TextCNN、LSTM、BiLSTM、BiLSTM+Attention)
- ipv4到ipv6的过渡
- pyqt5与html数据交互原理,pyqt5与本地html进行js交互
- C++函数参数的规则
- tcp流式传输_收听互联网广播以及下载和流式传输免费音乐的最佳网站
- 什么耳机适合跑步、挑选五款最佳的跑步耳机推荐
- pictures for my GitHub -- Convenient Pic's URL offering
- 原生js判断IE浏览器版本
- 分享一下我的一些学习方法
- 关于jQuery中的SuperSlide插件的使用
- 尝鲜用 React Hook + Parcel 构建真心话大冒险简单页面
- 教务系统一键评教案例分析
- oracle自来水boss建表语句,SQL语句(建库、建表、修改语句)
- 数据库大批量SQL插入性能优化
- 【Nodejs】外研社小学英语教材一年级起各年级英语音频下载(全)
- html字体怎么是什么属性,你不知道的CSS字体属性
- 可以关闭Telephony 服务吗
热门文章
- C++/C--set常见用法详解【转载】
- 一文搞懂C语言回调函数
- Markdown--编辑表格与矩阵
- 创建一个守护进程来监听服务进程的异常状态_用 C# 来守护 Python 进程
- k8s包管理器helm_是时候使用Helm了:Helm, Kubernetes的包管理工具
- java 504错误怎么解决_求助java.lang.NoClassDefFoundError怎么解决,报错信息如下
- mysql索引类型 优劣_Mysql索引的类型和优缺点详解
- Struts2增删改查 myeclipse开发文档加项目源码及eclipse开发项目源码
- java 反射类成员_java 反射(二)类成员
- 影响线型缩聚物分子量的因素_高分子化学试题