教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> Oracle触发器在MIS 开发中的应用

Oracle触发器在MIS 开发中的应用

上传者:网友
|
翻新时间:2023-03-10

Oracle触发器在MIS 开发中的应用

Oracle触发器在MIS 开发中的应用 Oracle触发器在MIS 开发中的应用 信息技术论文 更新:2006-4-8 阅读: Oracle触发器在MIS 开发中的应用

Oracle触发器在MIS 开发中的应用

周海涛 吴良刚

摘要:本文介绍了oracle触发器的概念和类型,总结了oracle触发器在开发MIS中的应用,并提供了实例以供参考.

关键词:MIS 、触发器 oracle

1.引言

本人在做一个大型的MIS系统(前台用powerbuild工具,后台用oracle数据库)时,常碰到一些有关数据冗长性,批量删除和动态信息方面的问题,由此发现数据库触发器简单易用。现将有关开发和应用中的一些体会总结成文,供同行参考。

2.触发器的概念和类型。

数据库触发器(database triggers)是响应插入、更新或删除等数据库事件而执行的过程。它定义了当一些数据库相关事件发生时应采取的动作。可用于管理复杂的完整性约束,或监控对表的修改,或通知其它程序,表已发生修改。它的类型有:语句级触发器,以及行级触发器,前者可以在语句执行前或执行后被触发。后者在每个触发语句影响的行触发一次。还有before和after触发的命令。在insert,update,和delete之前或之后执行,引用新旧值进行处理。如果需通过触发器设定插入行中的某列值,则为了访问“新(new)”值,需使用一个触发器before insert,使用after insert则不行。Instead of 触发器命令,使用它告诉oracle应执行什么操作。以上四种大类合成14种小类(略)。各种触发器的执行顺序如下:

⑴ 如果有,最先执行语句级before触发器。

⑵ 每个insert,delete,update影响的行;

① 如果有,最先执行行级before

② 执行行的delete或update

③ 如果有,执行行级after触发器

⑶ 如果有,执行语句级after触发器

3.使用数据库触发器管理数据冗余性

为了数据分析和制作报表的需要,用户在数据模型中加入了冗余数据,应使用触发器,以保证数据的完整性。

冗余数据可以用规定的 for each row选项的before update触发器进行管理。update 命令可放在触发器中对所有需要更新的冗余数据进行更新,如客户表和订单表,订单表包括客户的订单和客户表的冗余信息,客户表(customer)的表结构:客户号(cu_no)、客户名(cu_name)、客户地址(cu_address)。订单表(order)的表结构:订单号(or_no),客户号(or_no),客户名(cu_name),客户地址(cu_address),当客户基表中的数据被更新时更新订单中的冗余列。语法如下:

create or replace trigger bj_customer

before update on customer

for each row

begin

update order set

cu_no=:new.cu_no,

cu_name=:new.cu_name,

cu_address=:new.cu_addess,

where cu_no=:old.cu_no;

end;

4.用触发器完成数据复制

如果需求非常有限,可以用数据触发器从一个数据库中向另一个数据库复制数据,如果数据复制需求仅与数据的插入有关,当一条记录插入到一个数据库中的某个基表中时,用户还希望把这条记录插入到一个远程数据库中,需用create database link语句创建一条到远程数据库的连接,一旦创建了一条数据库连接后,就可以在基表上创建一个after insert触发器,以把每一条记录插入到远程数据库中。

(1)在脚本中创建数据库连接(database link)bj_ysd_remote基表作为数据库基表,Bj_ysd_local代表本地数据库上的源基表。

Creat database link remote(连接名)

Connect to bj(帐户) indentified by bj(密码)

Using ‘:2’;

(2)复制记录

create or replace trigger trig_ysd(触发器名)

after insert on bj_ysd_local

for each row

begin

insert into bj_ysd_remote@dblink remote

end;

(3)删除记录

create or replace trigger trig_ysd_del

after delete on bj_ysd_local

for each row

begin

delete from bj_ysd_remote@dblink remote

where x1=:old.x1

end;

5.用数据库触发器完成瀑布式删除操作

在某些情况下,当要删除一条记录时,该记录是与外键有关的另外一张基表上的记录时,这个删除操作必须在模型中进行传递,否则会出现大量的冗长数据,仍以cumstomer 和order基表为例,当从customer中删除一个客户时,order基表中所有相关记录也应当删除。

Create or replace trigger trig_cust

Before delete on customer

For each row

Begin

Delete from order;

Where cu_no=old.cu_no;

End;

6.用触发器完成动态数据的操作

在涉及如何实现动态库存的问题时,可用触发器解决。仓库有验收、出库、调拨、报废、退料、让售等这些数据必须与以前的库存相加减,才能完成动态库存操作。本文仅以验收单触发器为例,其它的结构雷同。它们涉及到两个基表:bi­_ysd(验收单),Bj_kcb(当前库存表),前者的表结构(rq(日期),ysdh(验收单号), bjbm(备件编码),yssl(验收数量),ysdj(验收单价)),后者的表结构为(bjbm(备件编码),dqkcl(当前库存量),dqkcje(当前库存金额))触发器如下:

create or replace trigger trig_ysd

after insert or update or delete on bj_ysd

for each row

if inserting or updating then

rq1:=:new.rq;bjbm1:=:new.bjbm;yssl1:=:new.yssl;

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

我的MP3
游登封
游江心屿
畅谈暑假期间生活
我与祖国共成长
蜘蛛展
厦门游记
贝壳奇观
外婆
美丽四季
宝贵的一元钱
我爱那一片草坪
奶奶家的小狗
中秋节赏月
假如我有魔法棒
论国有出资人财务监督与总会计师制度改革
论大股东控制下的上市公司独立审计委托模式
高校职务犯罪之审计剖析
会计服务市场发展的动因及趋势计
上市公司审计费用披露影响因素
我国会计师事务所审计收费问题及其对策分析
依法公正审计 为构建和谐社会服务
内部审计职业界面临的挑战和机遇
效益审计风险的成因及对策研究
结果与过程层面的管理审计评价指标
审计准则的经济后果分析
上市公司财务报告粉饰的动机及其防范对策研究
论我国上市公司内部控制的监督与评价
论会计电算化条件下的审计
企业并购过程中的审计风险与防范
《邓稼先》有关资料
《邓稼先》写作特点
钱三强──中国的原子之父
中国工程物理研究院核武器事业发展纪实
发现 讨论 探究 质疑──从《木兰诗》的教学谈研究性学习在语文中的运用
《木兰诗》教学实录
邓稼先生平简介
关于原子弹
杨振宁和邓稼先
让生命课堂从这里起航──《木兰诗》教学案例
《木兰诗》教学实录
谈《木兰诗》教学中游戏原则的运用──《木兰诗》教学反思
奥本海默
《邓稼先》写作特色
杨振宁简介