oracle觸發(fā)器_第1頁
oracle觸發(fā)器_第2頁
oracle觸發(fā)器_第3頁
oracle觸發(fā)器_第4頁
oracle觸發(fā)器_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Oracle觸發(fā)器語法(一) 一 Oracle觸發(fā)器語法觸發(fā)器是特定事件出現(xiàn)的時候,自動執(zhí)行的代碼塊。類似于存儲過程,觸發(fā)器與存儲過程的區(qū)別在于:存儲過程是由用戶或應(yīng)用程序顯式調(diào)用的,而觸發(fā)器是不能被直接調(diào)用的。功能:1、 允許/限制對表的修改2、 自動生成派生列,比如自增字段3、 強制數(shù)據(jù)一致性4、 提供審計和日志記錄5、 防止無效的事務(wù)處理6、 啟用復(fù)雜的業(yè)務(wù)邏輯觸發(fā)器觸發(fā)時間有兩種:after和before。1、觸發(fā)器的語法:CREATE OR REPLACE TIGGER觸發(fā)器名 觸發(fā)時間 觸發(fā)事件ON表名FOR EACH ROWBEGINpl/sql語句END其中:觸發(fā)器名:觸發(fā)器對

2、象的名稱。由于觸發(fā)器是數(shù)據(jù)庫自動執(zhí)行的,因此該名稱只是一個名稱,沒有實質(zhì)的用途。觸發(fā)時間:指明觸發(fā)器何時執(zhí)行,該值可?。篵efore-表示在數(shù)據(jù)庫動作之前觸發(fā)器執(zhí)行;after-表示在數(shù)據(jù)庫動作之后出發(fā)器執(zhí)行。觸發(fā)事件:指明哪些數(shù)據(jù)庫動作會觸發(fā)此觸發(fā)器: insert:數(shù)據(jù)庫插入會觸發(fā)此觸發(fā)器;Oracle觸發(fā)器語法(二) update:數(shù)據(jù)庫修改會觸發(fā)此觸發(fā)器; delete:數(shù)據(jù)庫刪除會觸發(fā)此觸發(fā)器。表 名:數(shù)據(jù)庫觸發(fā)器所在的表。for each row:對表的每一行觸發(fā)器執(zhí)行一次。如果沒有這一選項,則只對整個表執(zhí)行一次。2、舉例:下面的觸發(fā)器在更新表auths之前觸發(fā),目的是不允許在周末

3、修改表:createtriggerauth_securebeforeinsertorupdateordelete/對整表更新前觸發(fā) onauthsbeginif(to_char(sysdate,DY)=SUNRAISE_APPLICATION_ERROR(-20600,不能在周末修改表auths);endif;end例子:CREATEORREPLACETRIGGERCRM.T_SUB_USERINFO_AUR_NAMEAFTERUPDATEOFSTAFF_NAME ONCRM.T_SUB_USERINFOREFERENCINGOLDASOLDNEWASNEWFOREACHROWdeclareb

4、eginif:NEW.STAFF_NAME!=:OLD.STAFF_NAMEthenbegin 客戶投訴 updateT_COMPLAINT_MANAGEsetSERVE_NAME=:NEW.STAFF_NAMEwhereSERVE_SEED=:OLD.SEED; 客戶關(guān)懷 updateT_CUSTOMER_CAREsetEXECUTOR_NAME=:NEW.STAFF_NAME whereEXECUTOR_SEED=:OLD.SEED; 客戶服務(wù)updateT_CUSTOMER_SERVICEsetEXECUTOR_NAME=:NEW.STAFF_NAME whereEXECUTOR_SEE

5、D=:OLD.SEED;end;endif;endT_sub_userinfo_aur_name;/Oracle觸發(fā)器語法(三) 二 Oracle觸發(fā)器詳解開始: createtriggerbiufer_employees_department_id beforeinsertorupdateofdepartment_idonemployeesreferencingoldasold_valuenewasnew_valueforeachrowwhen(new_value.department_id80)begin:new_mission_pct:=0;end;/1、觸發(fā)器的組成部分:1、 觸發(fā)器名

6、稱2、 觸發(fā)語句3、 觸發(fā)器限制4、 觸發(fā)操作1.1、觸發(fā)器名稱 createtriggerbiufer_employees_department_id命名習(xí)慣: biufer(beforeinsertupdateforeachrow)employees表名department_id列名1.2、觸發(fā)語句比如:表或視圖上的DML語句DDL語句Oracle觸發(fā)器語法(四) 數(shù)據(jù)庫關(guān)閉或啟動,startup shutdown等等 beforeinsertorupdate ofdepartment_idonemployeesreferencingoldasold_valuenewasnew_value

7、foreachrow說明:1、 無論是否規(guī)定了department_id,對employees表進行insert的時候2、 對employees表的department_id列進行update的時候1.3、觸發(fā)器限制 when(new_value.department_id80)限制不是必須的。此例表示如果列department_id不等于80的時候,觸發(fā)器就會執(zhí)行。其中的new_value是代表更新之后的值。1.4、觸發(fā)操作是觸發(fā)器的主體begin :new_mission_pct:=0;end;主體很簡單,就是將更新后的commission_pct列置為0觸發(fā):insertintoemployees(employee_id,last_name,first_name,hire_date,job_id,email, department_id,salary,commission_pct)values(12345,Chen,Donny,sys

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論