触发器设计技巧和实例
在数据库设计中,有两种方法可设定自动化的资料处理规则,一种是条件约束,
一种是触发器,一般而言,条件约束比触发器较容易设定及维护,且执行效率较
好,但条件约束只能对资料进行简单的栏位检核,当涉及到多表操作等复杂操
作时,就要用到触发器了.
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别
是:
虚拟表inserted 虚拟表deleted
在表记录新增时 存放新增的记录 不存储记录
修改时 存放用来更新的新记录 存放更新前的记录
删除时 不存储记录 存放被删除的记录
触发器的种类及触发时机
after触发器:触发时机在资料已变动完成后,他将对变动资料进行必要的
善后和处理,若发现有错误,则用事务回滚(rollback transaction)
将此次操作所更动的资料全部回复。
istead of 触发器:触发时机在资料变动前发生,且资料怎么变动取决于触发器
目前介绍一下创建触发器的编写格式:
after类型:
create trigger 触发器名称
on 表名
after 操作(insert,update)
as
sql语句
instead类型
create trigger 触发器名称
on 表名
instead of 操作(update,delete)
as
sql语句
实例1:
在订单(表orders)中的订购数量(列名为num)有变动时,触发器会先到客户(表customer)中
取得该用户的信用等级(列名为level),然后再到信用额度(creit)中取出该等级
许可的订购数量上下限,最后比较订单中的订购数量是否符合限制。
代码:
create trigger num_check
on orders
after insert,update
as
if update(num)
begin
if exists(select a.* from orders a join customer b on a.customerid=b.customerid
join creit c on b.level=c.level
where a.num between c.up and c.down)
begin
rollback transaction
exec master..xp_sendmail administrator,客户的订购数量不符合限制
end
end
实例2:
有工资管理系统中,当公司对某员工甲的月薪进行调整时,通常会先在表员工中修改薪资列,然后在
表员工记录中修改薪资调整时间和薪资
create trigger compensation
on 员工
after update
as
if @@rowcount=0 return
if update(薪资)
begin
insert 员工记录
select 员工遍号,薪资,getdate()
from inserted
end
分享到:
相关推荐
本文摘自公司内部培训文件,文章通过实例方式对Xilinx Spartan-3AN系列FPGA的触发器使用技巧提出了一些思路,并且这些思路同样适用于Xilinx其它系列的FPGA逻辑设计。
包括Delphi的快速入门、Object PascaI的语法基础、基本组件的使用方法、数据库基础知识、数据库环境设置、连接数据库的方法、使用BDE和ADO等组件进行各种数据操作的方法、数据控制组件的使用方法、报表和图表的设计...
Delphi是由Inprise公司推出的面向对象的可视化软件开发工具。Delphi 5是Delphi的最新版本。...16.6.24 同时只运行程序的一个实例 429 16.6.25 关闭运行的其他应用程序 431 16.6.26 显示旋转字体 432
内容包括从基本的数据库设计理论到高效的查询优化技巧,涵盖了索引使用、存储过程、触发器以及数据安全等关键主题。此外,资源中还包括作者在学习过程中编写的笔记以及实际优化项目的案例分析,旨在为读者提供从理论...
目 录 前言 第一部分 Delphi编程基础 第1章 Delphi集成开发环境 1 1.1 集成开发环境简介 1 ...16.6.24 同时只运行程序的一个实例 429 16.6.25 关闭运行的其他应用程序 431 16.6.26 显示旋转字体 432
通过对这些实例进行详细分析和讲解,可以让读者迅速掌握程序设计的开发经验和技巧,迅速提高程序设计的综合水平。全书分为20章,涵盖了搭建ASP.NET开发环境、HTML开发与实践、CSS样式与JavaScript脚本应用、常用Web...
第5版是基于Oracle数据库11g的R1、R2两个版本的最新版,包含了语法、建议、大量实例和许多新的信息。 ?了解新特征,包括基于版本的重定义功能、函数结果缓存功能、CONTINUE语句、复合触发器和针对大对象的...
通过对这些实例进行详细分析和讲解,可以让读者迅速掌握程序设计的开发经验和技巧,迅速提高程序设计的综合水平。全书分为20章,涵盖了搭建ASP.NET开发环境、HTML开发与实践、CSS样式与JavaScript脚本应用、常用Web...
本书分为5篇15章,共计625个实例和625个经验技巧。每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。 本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习...
◆除规范化外的数据设计技巧 ◆尽量提高应用程序运行速度的方法 ◆有关存储过程和用户定义函数的全部内容 ◆存储过程的高级处理方法 ◆报表服务和集成服务的用法 ◆提高数据库安全性的提示信息 ◆如何...
第5版是基于Oracle数据库11g的R1、R2两个版本的最新版,包含了语法、建议、大量实例和许多新的信息。 ?了解新特征,包括基于版本的重定义功能、函数结果缓存功能、CONTINUE语句、复合触发器和针对大对象的...
第一部分是ORACLE SQL*PLUS基础,主要讲述ORACLE 应用系统设计的基本知识和给出一些有用的实例;第二部分是介绍ORACLE PL/SQL知识,主要讲述ORACLE数据库PL/SQL程序设计所用到基本知识,这部分给出进行应用设计所...
第一部分是ORACLE基础,主要讲述ORACLE 应用系统设计的基本知识和给出一些有用的实例; 第二部分是介绍ORACLE PL/SQL知识。 总的特点是: 1.用简单明了的语句对解释各个部分的内容,省去一些理论性的解释; 2.给出...
分,第一部分是ORACLE SQL*PLUS 基础,主要讲述ORACLE 应用系统设计的基本知识和 给出一些有用的实例;第二部分是介绍ORACLE PL/SQL 知识,主要讲述ORACLE 数据库 PL/SQL 程序设计所用到基本知识,这部分给出进行...
SQL Server 2000概述、SQL Server 2000安装和配置、SQL Server 2000工具、数据库系统基础、SQL Server 2000数据类型、SQL Server 2000数据库创建与管理、SQL Server 2000数据库表的创建和管理、SQL技术、Transact ...