`

触发器设计技巧和实例

阅读更多

 触发器设计技巧和实例

在数据库设计中,有两种方法可设定自动化的资料处理规则,一种是条件约束,
一种是触发器,一般而言,条件约束比触发器较容易设定及维护,且执行效率较
好,但条件约束只能对资料进行简单的栏位检核,当涉及到多表操作等复杂操
作时,就要用到触发器了.
      一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别
 是:
                 虚拟表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触发器的使用技巧之一.pdf

    本文摘自公司内部培训文件,文章通过实例方式对Xilinx Spartan-3AN系列FPGA的触发器使用技巧提出了一些思路,并且这些思路同样适用于Xilinx其它系列的FPGA逻辑设计。

    精通Delphi数据库设计与实例开发配套光盘

    包括Delphi的快速入门、Object PascaI的语法基础、基本组件的使用方法、数据库基础知识、数据库环境设置、连接数据库的方法、使用BDE和ADO等组件进行各种数据操作的方法、数据控制组件的使用方法、报表和图表的设计...

    DELPHI 5编程实例与技巧

    Delphi是由Inprise公司推出的面向对象的可视化软件开发工具。Delphi 5是Delphi的最新版本。...16.6.24 同时只运行程序的一个实例 429 16.6.25 关闭运行的其他应用程序 431 16.6.26 显示旋转字体 432

    数据库开发 - MySQL实战技巧 - 学习笔记与优化案例 - 求职与技能提升

    内容包括从基本的数据库设计理论到高效的查询优化技巧,涵盖了索引使用、存储过程、触发器以及数据安全等关键主题。此外,资源中还包括作者在学习过程中编写的笔记以及实际优化项目的案例分析,旨在为读者提供从理论...

    Delphi 5编程实例与技巧

    目 录 前言 第一部分 Delphi编程基础 第1章 Delphi集成开发环境 1 1.1 集成开发环境简介 1 ...16.6.24 同时只运行程序的一个实例 429 16.6.25 关闭运行的其他应用程序 431 16.6.26 显示旋转字体 432

    ASP.NET程序开发范例宝典(C#)(第2版part2

    通过对这些实例进行详细分析和讲解,可以让读者迅速掌握程序设计的开发经验和技巧,迅速提高程序设计的综合水平。全书分为20章,涵盖了搭建ASP.NET开发环境、HTML开发与实践、CSS样式与JavaScript脚本应用、常用Web...

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    第5版是基于Oracle数据库11g的R1、R2两个版本的最新版,包含了语法、建议、大量实例和许多新的信息。 ?了解新特征,包括基于版本的重定义功能、函数结果缓存功能、CONTINUE语句、复合触发器和针对大对象的...

    ASP.NET程序开发范例宝典(C#)(第2版part1

    通过对这些实例进行详细分析和讲解,可以让读者迅速掌握程序设计的开发经验和技巧,迅速提高程序设计的综合水平。全书分为20章,涵盖了搭建ASP.NET开发环境、HTML开发与实践、CSS样式与JavaScript脚本应用、常用Web...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    本书分为5篇15章,共计625个实例和625个经验技巧。每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。   本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习...

    SQL Server 2008高级程序设计 2/6

     ◆除规范化外的数据设计技巧  ◆尽量提高应用程序运行速度的方法  ◆有关存储过程和用户定义函数的全部内容  ◆存储过程的高级处理方法  ◆报表服务和集成服务的用法  ◆提高数据库安全性的提示信息  ◆如何...

    Oracle PL/SQL程序设计(第5版)(下册) 第一部分

    第5版是基于Oracle数据库11g的R1、R2两个版本的最新版,包含了语法、建议、大量实例和许多新的信息。 ?了解新特征,包括基于版本的重定义功能、函数结果缓存功能、CONTINUE语句、复合触发器和针对大对象的...

    oracle 应用教程

    第一部分是ORACLE SQL*PLUS基础,主要讲述ORACLE 应用系统设计的基本知识和给出一些有用的实例;第二部分是介绍ORACLE PL/SQL知识,主要讲述ORACLE数据库PL/SQL程序设计所用到基本知识,这部分给出进行应用设计所...

    Oracle 实用教程(全面实用)

    第一部分是ORACLE基础,主要讲述ORACLE 应用系统设计的基本知识和给出一些有用的实例; 第二部分是介绍ORACLE PL/SQL知识。 总的特点是: 1.用简单明了的语句对解释各个部分的内容,省去一些理论性的解释; 2.给出...

    Oracle8i/9i 数据库基础(对想全面了解Oracle的程序员来说真是一本很好的书)

    分,第一部分是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 Server 2000数据库表的创建和管理、SQL技术、Transact ...

Global site tag (gtag.js) - Google Analytics