教育资源为主的文档平台

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

下载文档

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

网友最新关注

2003年高考北京满分作文?转折
转折
转折
探知的阻碍
列车•茶•春花
《看着我的眼睛》
一步与一生
有色眼镜引发的联想
品味高考
转折
情感的权力
作文试题
2003年高考上海卷优秀作文--杂而不乱归于大同
试题评析
转折
关于幼儿教师服饰美的内蕴及其运用探析
关于幼儿教师反思性教学实践探究
从技术环境论看西部民族地区企业技术引进与选择(1)
FDI增长与外贸发展实证研究(1)
幼儿教师心理健康问题浅议
“传统型”幼儿教师的蜕变
农民收入低、提高慢问题的探索
从产业经济的角度看北京奥运会(1)
试论幼儿教师的语言技能及应用策略
阿拜经济思想在当代的理论意义和社会价值(1)
上海科技发展的学科结构与绩效评价(1)
借鉴国外经验完善我国税收优惠政策
我国自主创新能力研究理论综述(1)
幼儿教师职业倦怠研究
对幼儿教师“指令’’的另一种解读
《小小的船》第二组教学设计四
《小小的船》第三组教学设计一
《爷爷和小树》教学设计一
《小小的船》第二组教学设计一第一课时
《小小的船》第二组教学设计五
《小小的船》第二组教学设计一第二课时
《小小的船》第三组教学设计二
《小小的船》第三组教学设计三
《影子》教学设计五第二课时
《影子》教学设计五第一课时
《小小的船》第四组教学设计四
《小小的船》第二组教学设计二
《影子》教学设计三
《小小的船》第二组教学设计三
《小小的船》第四组教学设计三