<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            軟件測試數據數中Oracle觸發(fā)器語(yǔ)法及實(shí)例

            發(fā)布: 2010-10-18 09:35 | 作者: 網(wǎng)絡(luò )轉載 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng)采編 | 查看: 94次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

            軟件測試數據數中Oracle觸發(fā)器語(yǔ)法及實(shí)例

            oracle是殷墟(Yin Xu)出土的甲骨文(oracle bone inscriptions)的英文翻譯的第一個(gè)單詞,在英語(yǔ)里是“神諭”的意思。Oracle是世界領(lǐng)先的信息管理軟件開(kāi)發(fā)商,因其復雜的關(guān)系數據庫產(chǎn)品而聞名。Oracle數據庫產(chǎn)品為財富排行榜上的前1000家公司所采用,許多大型網(wǎng)站也選用了Oracle系統。
            一 Oracle觸發(fā)器語(yǔ)法
              觸發(fā)器是特定事件出現的時(shí)候,自動(dòng)執行的代碼塊。類(lèi)似于存儲過(guò)程,觸發(fā)器與存儲過(guò)程的區別在于:存儲過(guò)程是由用戶(hù)或應用程序顯式調用的,而觸發(fā)器是不能被直接調用的。

              功能:

              1、 允許/限制對表的修改

              2、 自動(dòng)生成派生列,比如自增字段

              3、 強制數據一致性

              4、 提供審計和日志記錄

              5、 防止無(wú)效的事務(wù)處理

              6、 啟用復雜的業(yè)務(wù)邏輯

              觸發(fā)器觸發(fā)時(shí)間有兩種:after和before。

              1、觸發(fā)器的語(yǔ)法:

              CREATE [OR REPLACE] TIGGER觸發(fā)器名 觸發(fā)時(shí)間 觸發(fā)事件

              ON表名

              [FOR EACH ROW]

              BEGIN

              pl/sql語(yǔ)句

              END

              其中:

              觸發(fā)器名:觸發(fā)器對象的名稱(chēng)。

              由于觸發(fā)器是數據庫自動(dòng)執行的,因此該名稱(chēng)只是一個(gè)名稱(chēng),沒(méi)有實(shí)質(zhì)的用途。

              觸發(fā)時(shí)間:指明觸發(fā)器何時(shí)執行,該值可。

              before—表示在數據庫動(dòng)作之前觸發(fā)器執行;

              after—表示在數據庫動(dòng)作之后出發(fā)器執行。

              觸發(fā)事件:指明哪些數據庫動(dòng)作會(huì )觸發(fā)此觸發(fā)器:

              insert:數據庫插入會(huì )觸發(fā)此觸發(fā)器;

              Oracle觸發(fā)器語(yǔ)法(二)Oracle觸發(fā)器詳解

              update:數據庫修改會(huì )觸發(fā)此觸發(fā)器;

              delete:數據庫刪除會(huì )觸發(fā)此觸發(fā)器。

              表 名:數據庫觸發(fā)器所在的表。

              for each row:對表的每一行觸發(fā)器執行一次。如果沒(méi)有這一選項,則只對整個(gè)表執行一次。

              2、舉例:

              下面的觸發(fā)器在更新表auths之前觸發(fā),目的是不允許在周末修改表:

              create triggerauth_secure before insert or update or delete //對整表更新前觸發(fā)

              on auths

              begin

              if(to_char(sysdate,’DY’)=’SUN’

              RAISE_APPLICATION_ERROR(-20600,’不能在周末修改表auths’);

              end if;

              end

              例子:

              CREATE OR REPLACE TRIGGER CRM.T_SUB_USERINFO_AUR_NAME AFTER UPDATE OF STAFF_NAME

              ON CRM.T_SUB_USERINFO

              REFERENCING OLD AS OLD NEW AS NEW

              FOR EACH ROW

              declare

              begin

              if :NEW.STAFF_NAME!=:OLD.STAFF_NAME then

              begin

              客戶(hù)投訴:

              update T_COMPLAINT_MANAGE set SERVE_NAME=:NEW.STAFF_NAME where SERVE_SEED=:OLD.SEED;

              客戶(hù)關(guān)懷

              update T_CUSTOMER_CARE set EXECUTOR_NAME=:NEW.STAFF_NAME where EXECUTOR_SEED=:OLD.SEED;

              客戶(hù)服務(wù)

              update T_CUSTOMER_SERVICE set EXECUTOR_NAME=:NEW.STAFF_NAME

              where EXECUTOR_SEED=:OLD.SEED;

              end;

              end if;

              end T_sub_userinfo_aur_name;

              /

              二

              開(kāi)始:

              create triggerbiufer_employees_department_id

              beforeinsertorupdateofdepartment_idonemployees

              referencingoldasold_value newasnew_value

              for each row

              when (new_value.department_id<>80 )

              begin

              :new_value.commission_pct :=0;

              end;

              /

              1、觸發(fā)器的組成部分:

              1、 觸發(fā)器名稱(chēng)

              2、 觸發(fā)語(yǔ)句

              3、 觸發(fā)器限制

              4、 觸發(fā)操作

              1.1、觸發(fā)器名稱(chēng)

              create trigger biufer_employees_department_id

              命名習慣:

              biufer(before insert update for each row)

              employees表名

              department_id列名

              1.2、觸發(fā)語(yǔ)句

              比如:

              表或視圖上的DML語(yǔ)句

              DDL語(yǔ)句

              Oracle觸發(fā)器語(yǔ)法(四)

              數據庫關(guān)閉或啟動(dòng),startup shutdown等等

              before insert or update

              of department_id

              on employees

              referencing old as old_value

              new as new_value

              for each row

              說(shuō)明:

              1、 無(wú)論是否規定了department_id,對employees表進(jìn)行insert的時(shí)候

              2、 對employees表的department_id列進(jìn)行update的時(shí)候

              1.3、觸發(fā)器限制

              when (new_value.department_id<>80 )

              限制不是必須的。此例表示如果列department_id不等于80的時(shí)候,觸發(fā)器就會(huì )執行。

              其中的new_value是代表更新之后的值。

              1.4、觸發(fā)操作

              是觸發(fā)器的主體

              begin

              :new_value.commission_pct :=0;

              end;

              主體很簡(jiǎn)單,就是將更新后的commission_pct列置為0

              觸發(fā):

              insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,

              department_id,salary,commission_pct )

              values( 12345,’Chen’,’Donny’, sysdate, 12, ‘donny@hotmail.com’,60,10000,.25);

              select commission_pct from employees where employee_id=12345;

              觸發(fā)器不會(huì )通知用戶(hù),便改變了用戶(hù)的輸入值。Oracle觸發(fā)器語(yǔ)法(四)

              數據庫關(guān)閉或啟動(dòng),startup shutdown等等

              before insert or update

              of department_id

              on employees

              referencing old as old_value

              new as new_value

              for each row

              說(shuō)明:

              1、 無(wú)論是否規定了department_id,對employees表進(jìn)行insert的時(shí)候

              2、 對employees表的department_id列進(jìn)行update的時(shí)候

              1.3、觸發(fā)器限制

              when (new_value.department_id<>80 )

              限制不是必須的。此例表示如果列department_id不等于80的時(shí)候,觸發(fā)器就會(huì )執行。

              其中的new_value是代表更新之后的值。

              1.4、觸發(fā)操作

              是觸發(fā)器的主體

              begin

              :new_value.commission_pct :=0;

              end;

              主體很簡(jiǎn)單,就是將更新后的commission_pct列置為0

              觸發(fā):

              insert into employees(employee_id,last_name,first_name,hire_date,job_id,email,

              department_id,salary,commission_pct )

              values( 12345,’Chen’,’Donny’, sysdate, 12, ‘donny@hotmail.com’,60,10000,.25);

              select commission_pct from employees where employee_id=12345;

              觸發(fā)器不會(huì )通知用戶(hù),便改變了用戶(hù)的輸入值。

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: oracle Oracle ORACLE 觸發(fā)器 軟件測試 實(shí)例 語(yǔ)法


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>