教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 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;

下载文档

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

网友最新关注

哈蜜瓜
老鹰捉小鸡
三只狗
快乐的一天
老虎变成大熊猫的故事
我的妈妈
老鼠120
西瓜
小企鹅回家了
团结就是力量
如果
我给老师敬了两个礼
希望
雪地里的战争
档案管理制度
开展党员先进性教育,推行公务接待制度改革
总公司档案管理办法
保密制度
工资管理制度
委组织部促进民营经济发展服务承诺制度
员工担保制度
区政府工作规则
档案利用制度
总公司文明单位创建与管理办法
关于市政协委员的管理办法
党委议事规则
通讯信息工作管理办法
文化局党组议事规则
区国税局督办检查工作制度
生态问题的信息哲学基础
OECD主要国家软件业发展概况 
论 惯 性
生物信息学新进展
如何上好数学课
试论高等教育行政纠纷解决机制探究
建构理论统计课堂教学方法初探
小学数学活动课的开设原则与形式
浅谈利用脑神经兴奋规律提高物理课堂教学效果
EM原液在水产养殖中的应用试验
浅论统计学中的统计思想
浅议如何选择合适的审计统计抽样方法
惯性大小的另一种理解
EM菌调制秸秆饲料技术
探讨物理教学应注重审美观念的培养
《乌鸦喝水》
《乌鸦喝水》教学设计之七
《小壁虎借尾巴》片断赏析
《乌鸦喝水》教学设计之九
《小壁虎借尾巴》第二课时
《小壁虎借尾巴》教学设计之十
《要下雨了》教学设计之七
《小壁虎借尾巴》教学设计之九
《乌鸦喝水》教学设计之二
《乌鸦喝水》第二课时
《小壁虎借尾巴》教学设计之八
《四个太阳》第一课时
《小壁虎借尾巴》教学设计之五
《四个太阳》教学设计之三
《小壁虎借尾巴》教学设计之二