触发器使用教程和命名规范.doc
文本预览下载声明
深圳市葛洛斯科技有限公司( HYPERLINK )
联系电话:0755触发器使用教程和命名规范
属性
内容
文档名称:
触发器使用教程和命名规范
文档版本号:
V1.0
文档编写日期:
2006-12-4
文档状态:
修订稿
作者:
李振国
发布日期:
2006-12-5
目 录
TOC \o 1-3 \h \z HYPERLINK \l _Toc153080508 触发器使用教程和命名规范 PAGEREF _Toc153080508 \h 1
HYPERLINK \l _Toc153080509 1,触发器简介 PAGEREF _Toc153080509 \h 1
HYPERLINK \l _Toc153080510 2,触发器示例 PAGEREF _Toc153080510 \h 2
HYPERLINK \l _Toc153080511 3,触发器语法和功能 PAGEREF _Toc153080511 \h 3
HYPERLINK \l _Toc153080512 4,例一:行级触发器之一 PAGEREF _Toc153080512 \h 4
HYPERLINK \l _Toc153080513 5,例二:行级触发器之二 PAGEREF _Toc153080513 \h 4
HYPERLINK \l _Toc153080514 6,例三:instead of触发器 PAGEREF _Toc153080514 \h 6
HYPERLINK \l _Toc153080515 7,例四:语句级触发器之一 PAGEREF _Toc153080515 \h 8
HYPERLINK \l _Toc153080516 8,例五:语句级触发器之二 PAGEREF _Toc153080516 \h 9
HYPERLINK \l _Toc153080517 9,例六:用包封装触发器代码 PAGEREF _Toc153080517 \h 10
HYPERLINK \l _Toc153080518 10,触发器命名规范 PAGEREF _Toc153080518 \h 11
1,触发器简介
触发器(Trigger)是数据库对象的一种,编码方式类似存储过程,与某张表(Table)相关联,当有DML语句对表进行操作时,可以引起触发器的执行,达到对插入记录一致性,正确性和规范性控制的目的。在当年C/S时代盛行的时候,由于客户端直接连接数据库,能保证数据库一致性的只有数据库本身,此时主键(Primary Key),外键(Foreign Key),约束(Constraint)和触发器成为必要的控制机制。而触发器的实现比较灵活,可编程性强,自然成为了最流行的控制机制。到了B/S时代,发展成4层架构,客户端不再能直接访问数据库,只有中间件才可以访问数据库。要控制数据库的一致性,既可以在中间件里控制,也可以在数据库端控制。很多的青睐Java的开发者,随之将数据库当成一个黑盒,把大多数的数据控制工作放在了Servlet中执行。这样做,不需要了解太多的数据库知识,也减少了数据库编程的复杂性,但同时增加了Servlet编程的工作量。从架构设计来看,中间件的功能是检查业务正确性和执行业务逻辑,如果把数据的一致性检查放到中间件去做,需要在所有涉及到数据写入的地方进行数据一致性检查。由于数据库访问相对于中间件来说是远程调用,要编写统一的数据一致性检查代码并非易事,一般采用在多个地方的增加类似的检查步骤。一旦一致性检查过程发生调整,势必导致多个地方的修改,不仅增加工作量,而且无法保证每个检查步骤的正确性。触发器的应用,应该放在关键的,多方发起的,高频访问的数据表上,过多使用触发器,会增加数据库负担,降低数据库性能。而放弃使用触发器,则会导致系统架构设计上的问题,影响系统的稳定性。
2,触发器示例
触发器代码类似存储过程,以PL/SQL脚本编写。下面是一个触发器的示例:
新建员工工资表salary
create table SALARY( EMPLOYEE_ID NUMBER, --员工ID MONTH VARCHAR2(6), --工资月份 AMOUNT NUMBER --工资金额)
创建与salary关联的触发器salary_trg_rai
1 Create or replace trigger salary_trg_rai
2 After insert on salary
3 For each row
4 declare
5 Begin
6 Dbms_output.put_line(‘员工ID:’ || :new.employee_id);
显示全部