《高性能的数据库》四

第四讲 编程细节

触发器

游标

函数

存储过程

事务

1、触发器。

定义: 何为触发器?在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
for Update

-------------------------------------------------------

--Name:truStudent

--func:更新BorrowRecord 的StudentID,与Student同步。

--Use :None

--User:System

--Memo : 临时写写的,给大家作个Sample。没有调试阿。

-------------------------------------------------------

As
if Update(StudentID)
begin
Update BorrowRecord
Set br.StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i
Where br.StudentID=d.StudentID
end

时间: 2024-09-12 16:59:25

《高性能的数据库》四的相关文章

最流行的高性能关系型数据库是如何在云端打造的

2017云栖大会POLARDB专场,阿里云资深技术专家林晓斌带来最流行的高性能关系型数据库是如何在云端打造的演讲.本文主要从数据库云服务目标开始说起,又介绍了经典模式痛点,接着提出了下一代数据库需要解决的问题和方案,最后做了简要总结. 以下是精彩内容整理:   数据库云服务的目标 做云数据库的目标,让DBA创造更大的价值,不仅阿里巴巴自己的DBA,还有客户的DBA,以及没有DBA的公司,担负DBA责任的开发人员,让这些人能够更加省心,这是我们做云数据库的目标. 基于这个目标有五个指标,包括可用性

高性能时序数据库 HiTSDB 启动公测,为物联网而生的数据库!

HiTSDB 是一种高性能.低成本.稳定可靠的在线时序数据库服务:提供高效读写,高压缩比存储.时序数据插值及聚合计算.是物联网(IoT)设备监控系统 ,企业能源管理系统(EMS),生产安全监控系统,电力检测系统等行业领域的专业数据库. 查看产品发布详情,申请公测 HiTSDB 打造物联网智慧园区 HiTSDB 已经在阿里巴巴内部孵化多年,在阿里巴巴集团已经支持了20多个核心业务场景,比如阿里智慧园区的物联网(IoT)建设. 智慧园区主要解决办公园区的设备的管理和智能控制.设备管理主要是将设备接入

java备份数据库四种方法(mysql,mssql数据库备份)

java备份数据库教程四种方法(mysql教程,mssql数据库备份) mysql数据库备份的东西,然后研究了一下java语言中怎么来调用cmd的命令来实现mysqldump的备份功能.具体实现如下: 1.首先设置环境变量:有两种方式.第一种,在环境变量中添加 mysql_home,设置内容为 mysql的安装路径,然后,在path中添加路径  %mysql_home%bin    .第二种方法,不新建mysql_home,而是直接在path中添加   mysql安装路径bin .这样,调用cm

用ASP存取各种常用类型数据库(四)

数据|数据库 4)由Foxpro生成的DBC数据库与MDB数据库相似,都是一个数据库包含几个数据表的形式,所以对DBC数据库的存取方法与MDB数据库相似. Function CreateDbcRecordset( DBC数据库文件名, 数据表名或Select语句 ) Dim conn,Driver,SourceType,DBPath ' 建立Connection 对象 Set conn = Server.CreateObject("ADODB.Connection") Driver =

《高性能的数据库》三

到现在已经是第三讲了,也不知道听众几何--说得好的话,送之鲜花,说得不好的话,丢个鸡蛋把!好歹也让我chair3知道有几个人听了. 好,废话少说,now begin: 要点: 约束 默认值 计算字段 索引 以上乃数据库设计以及编程的最常用的部分了,下面听我一一将来 1.约束. 约束?何为约束?也就是对某一字段数值限定.以维护数据库数据的最党的纯洁性.一流的程序员打一开始,就应当知道某一字段的填写范围. 算了,理论不说了,举例子: Create Table People ( Name varcha

《高性能的数据库》二

编程准则:(简单说说) 数据逻辑的放在一块 业务逻辑的放在一块 作界面的只做界面 最小网络传输 ------------ 1.数据逻辑的放在一块 比如,表:History 那么,存储过程:spWriteHistory 表示数据逻辑:就是对History的写操作 同样,存储spQueryHistoryFromHistoryID表示根据HistoryID对History记录的查询 再同样,spQueryHistoryFromHistoryID;2(;不是普通的分号,是存储过程组)表示HistoryI

《高性能的数据库》一

第一讲:范式设计 首先,俺说,数据库重在设计,然后才是开发.按照第三范式开发,会让你提升到一个新的境界! 名词解释:第三范式 第一范式:一个不包含重复列的表归于第一范式. 第二范式:如果一个表归于第一范式且只包含依赖于主键的列,则归于第二范式. 第三范式:如果一个表归于第二范式且只包含那些非传递性地依赖于主键的列,则归于第三范式. chair3口述简单解释: 第一范式:不设计重复字段的表 比如: Create Table tb1 ( fd1 varchar(20), --用来存放电话 fd2 v

VoltDB简介:对 Java 代码使用一个内存型的、高性能的数据库

简介 过去几年来,出现了一种称为 NoSQL 的新型数据库管理系统.设计这些数据存储是为了克服在扩展传统关 系数据库来处理一些应用程序时必须处理的数据负载类型的难题,比如说 Amazon.这种可伸缩性的实现需要 一定的代价:NoSQL 系统通常不符合 ACID(原子性.一致性.隔离和耐久性):它们最终一致地表明,只要 给定一定量的时间,所有数据更新最终都会通过该系统传播.这不符合某些类型的应用程序的要求. 过去用于在线事务处理 (OLTP) 的关系数据库管理系统确实提供了一致性保证(它们符合 A

VoltDB对Java代码使用一个内存型的、高性能的数据库

过去几年来,出现了一种称为 NoSQL 的新型数据库管理系统.设计这些数据存储是为了克服在扩展传统http://www.aliyun.com/zixun/aggregation/22.html">关系数据库来处理一些应用程序时必须处理的数据负载类型的难题,比如说 Amazon.这种可伸缩性的实现需要一定的代价:NoSQL 系统通常不符合 ACID(原子性.一致性.隔离和耐久性):它们最终一致地表明,只要给定一定量的时间,所有数据更新最终都会通过该系统传播.这不符合某些类型的应用程序的要求.