激情五月天婷婷,亚洲愉拍一区二区三区,日韩视频一区,a√天堂中文官网8

<ul id="buwfs"><strike id="buwfs"><strong id="buwfs"></strong></strike></ul>
    <output id="buwfs"></output>
  • <dfn id="buwfs"><source id="buwfs"></source></dfn>
      <dfn id="buwfs"><td id="buwfs"></td></dfn>
      <div id="buwfs"><small id="buwfs"></small></div>
      <dfn id="buwfs"><source id="buwfs"></source></dfn>
      1. <dfn id="buwfs"><td id="buwfs"></td></dfn>
        始創(chuàng)于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
        • 掛牌上市企業(yè)
        • 60秒人工響應(yīng)
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補(bǔ)償
        全部產(chǎn)品
        您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

        Oracle中觸發(fā)器詳解

        發(fā)布時(shí)間:  2012/5/31 15:08:11


        Oracle觸發(fā)器分類:
        1、 語(yǔ)句觸發(fā)器
        2、 行觸發(fā)器
        3、 系統(tǒng)條件觸發(fā)器
        4、 用戶事件觸發(fā)器
        5、 INSTEAD OF 觸發(fā)器

        1、 語(yǔ)句觸發(fā)器
        是在表上或者某些情況下的視圖上執(zhí)行的特定語(yǔ)句或者語(yǔ)句組上的觸發(fā)器。能夠與INSERT、UPDATE、
        DELETE或者組合上進(jìn)行關(guān)聯(lián)。但是無(wú)論使用什么樣的組合,各個(gè)語(yǔ)句觸發(fā)器都只會(huì)針對(duì)指定語(yǔ)句激活一次
        。比如,無(wú)論update多少行,也只會(huì)調(diào)用一次update語(yǔ)句觸發(fā)器。
        例子:
        需要對(duì)在表上進(jìn)行DML操作的用戶進(jìn)行安全檢查,看是否具有合適的特權(quán)。
        Create table foo(a number);
        Create trigger biud_foo
        Before insert or update or delete
        On foo
        Begin
        If user not in (‘DONNY’) then
        Raise_application_error(-20001, ‘You don’t have access to modify this table.’);
        End if;
        End;
        /
        即使SYS,SYSTEM用戶也不能修改foo表
        [試驗(yàn)]
        對(duì)修改表的時(shí)間、人物進(jìn)行日志記錄。
        1、 建立試驗(yàn)表
        create table employees_copy as select *from hr.employees
        2、 建立日志表
        create table employees_log(
        who varchar2(30),
        when date);
        3、 在employees_copy表上建立語(yǔ)句觸發(fā)器,在觸發(fā)器中填充employees_log 表。
        Create or replace trigger biud_employee_copy
        Before insert or update or delete
        On employees_copy
        Begin
        Insert into employees_log(
        Who,when)
        Values( user, sysdate);
        End;
        /
        4、 測(cè)試
        update employees_copy set salary= salary*1.1;
        select *from employess_log;
        5、 確定是哪個(gè)語(yǔ)句起作用?
        即是INSERT/UPDATE/DELETE中的哪一個(gè)觸發(fā)了觸發(fā)器?
        可以在觸發(fā)器中使用INSERTING / UPDATING / DELETING 條件謂詞,作判斷:
        begin
        if inserting then
        -----
        elsif updating then
        -----
        elsif deleting then
        ------
        end if;
        end;
        if updating(‘COL1’) or updating(‘COL2’) then
        ------
        end if;
        [試驗(yàn)]
        1、 修改日志表
        alter table employees_log
        add (action varchar2(20));
        2、 修改觸發(fā)器,以便記錄語(yǔ)句類型。
        Create or replace trigger biud_employee_copy
        Before insert or update or delete
        On employees_copy
        Declare
        L_action employees_log.action%type;
        Begin Oracle DBA
        if inserting then
        l_action:=’Insert’;
        elsif updating then
        l_action:=’Update’;
        elsif deleting then
        l_action:=’Delete’;
        else
        raise_application_error(-20001,’You should never ever get this error.’);
        Insert into employees_log(
        Who,action,when)
        Values( user, l_action,sysdate);
        End;
        /
        3、 測(cè)試
        insert into employees_copy( employee_id, last_name, email, hire_date, job_id)
        values(12345,’Chen’,’Donny@hotmail’,sysdate,12);
        select *from employees_log
        update employees_copy set salary=50000 where employee_id = 12345;

        2、 行觸發(fā)器
        是指為受到影響的各個(gè)行激活的觸發(fā)器,定義與語(yǔ)句觸發(fā)器類似,有以下兩個(gè)例外:
        1、 定義語(yǔ)句中包含F(xiàn)OR EACH ROW子句
        2、 在BEFORE……FOR EACH ROW觸發(fā)器中,用戶可以引用受到影響的行值。


        3、 系統(tǒng)事件觸發(fā)器
        系統(tǒng)事件:數(shù)據(jù)庫(kù)啟動(dòng)、關(guān)閉,服務(wù)器錯(cuò)誤
        create trigger ad_startup
        after startup
        on database
        begin
        -- do some stuff
        end;
        /

        4、 用戶事件觸發(fā)器
        用戶事件:用戶登陸、注銷,CREATE / ALTER / DROP / ANALYZE / AUDIT / GRANT / REVOKE /
        RENAME / TRUNCATE / LOGOFF

         
        本文出自:億恩科技【mszdt.com】

        服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

      2. 您可能在找
      3. 億恩北京公司:
      4. 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
      5. 億恩鄭州公司:
      6. 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
      7. 億恩南昌公司:
      8. 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
      9. 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
      10. 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
      11. 專注服務(wù)器托管17年
        掃掃關(guān)注-微信公眾號(hào)
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
          0
         
         
         
         

        0371-60135900
        7*24小時(shí)客服服務(wù)熱線