<del id="dhfrq"></del>

    1. <tr id="dhfrq"></tr>
      成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
      現在位置:范文先生網>理工論文>計算機信息技術>Oracle觸發器在MIS 開發中的應用

      Oracle觸發器在MIS 開發中的應用

      時間:2023-02-21 00:18:58 計算機信息技術 我要投稿
      • 相關推薦

      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

      value(:new.x1,:new.x2,……)/*x1.x2代表字段名*/

      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

      declare rq1 varchar2(8);rq2 varchar2(8);

      /*限于篇幅,yssl1,yssl2,ysdj1,ysdj2,bjbm1,bjbm2,ii聲明略*/

      if inserting or updating then

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

      ysdj1:=:new.ysdj;

      select count(*) into ii from bj_dqkcb

      where bjbm=bjbm1;

      if  ii=0  then

      insert  into  bj_dqkcb(bjbm,dqkcl,dqkcje)

      value(bjbm1,yssl1,ysdj1);

      else

      update bj_dqkcb

      set dqkcl=dqkcl+yssl1;

      dqkcje=dqkcje+yssl1*ysdj1;

      end if

      end if

      if deleting or updating then

      rq2:=:old.rq;bjbm2:=:old.bjbm;yssl2:=:old.yssl;

      ysdj2:=:old.ysdj;

      update bj_dqkcb

      set dqkcb=dqkcl-yssl2;

      dqkcje=dqkcje-yssl2*ysdj2

      end if;

      end ;

      7.結束語

      數據庫觸發器在數據庫開發、MIS開發上有很廣泛的應用,但經驗表明,使用過多的觸發器將降低整個數據庫的性能。如果數據庫觸發器寫得不好,它會很快破壞數據庫的性能,因此,在適當的時候使用恰當的觸發器顯得非常重要。

      參考文獻:

      Michael Abbey.機械工業出版社.Oracle8初學者指南,1998

      Joline Morrison.機械工業出版社.Oracle8數據庫指南,1999

       

      Tile:The applications of the oracle triggers in the

      development of MIS

      Abstract:the paper introduces the concept and types of the oracle triggers,summarizes the applications of the oracle triggers in the MIS,and provides the examples for reference.

      Key words:oracle   trigger

      zhtsam@263.net

      通訊地址:湖南長沙中南大學岳麓校區新研公寓617信箱

      郵編:410083

      e-mail:zhtsam@263.net

      電話:0731-8832997

      call:0731-95838-16056


      【Oracle觸發器在MIS 開發中的應用】相關文章:

      備件MIS系統的開發和應用體會08-06

      MIS 系統開發中的項目管理08-06

      MIS開發中軟件工程方法的運用08-06

      用Excel開發MIS的方法08-06

      用Excel開發MIS的方法08-16

      MIS開發中C/S模式與B/S模式的結合策略08-06

      DDE與COM技術在組態軟件開發中的應用08-06

      營業廳綜合MIS系統的組成和應用淺析08-06

      圖形化開發平臺在虛擬儀器中的應用08-06

      主站蜘蛛池模板: 日韩在线视频观看免费网站| 久久精品国产再热青青青| 巨爆乳中文字幕爆乳区| 日本不卡片一区二区三区| 日韩精品一区二区三区人| 女同精品女同系列在线观看| 国产羞羞的视频一区二区| 色综合欧美亚洲国产| 国产人妻精品午夜福利免费 | 成人激情视频一区二区三区| 国产熟女精品一区二区三区| 国产老熟女乱子一区二区| 国产精品综合色区在线观| 浪潮av色综合久久天堂| 久久99九九精品久久久久蜜桃| 人妻另类 专区 欧美 制服| 国产精品午夜福利在线观看| 亚洲av永久无码精品秋霞电影影院 | 国产日韩一区二区在线| 日本欧美一区二区三区在线播放 | 亚洲成av人片色午夜乱码| 做暖暖视频在线看片免费| 日韩中文字幕人妻一区| 99中文字幕精品国产| 日本边添边摸边做边爱喷水| 亚洲人妻精品一区二区| 欧洲中文字幕国产精品| 99久久无码私人网站| 影音先锋啪啪av资源网站| 精品国产精品午夜福利| 大陆精大陆国产国语精品| 亚洲人午夜精品射精日韩| 国产性生大片免费观看性| 亚洲国产免费图区在线视频| 精品国产亚洲午夜精品av| 一本色道久久综合熟妇人妻| 久久夜色精品亚洲国产av| 国产成人亚洲精品狼色在线| 亚成区成线在人线免费99| 国产剧情福利一区二区麻豆 | gogogo高清在线观看视频中文|