日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 触发器的种类和触发事件

發(fā)布時間:2024/8/26 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 触发器的种类和触发事件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
觸發(fā)器的種類和觸發(fā)事件 ?
觸發(fā)器必須由事件才能觸發(fā)。觸發(fā)器的觸發(fā)事件分可為3類,分別是DML事件、DDL事件和數(shù)據(jù)庫事件。?
每類事件包含若干個事件,如下所示。數(shù)據(jù)庫的事件是具體的,在創(chuàng)建觸發(fā)器時要指明觸發(fā)的事件。?
種? 類 關(guān) 鍵 字 含??? 義?
Sql代碼??
  • DML事件(3種)???INSERT??在表或視圖中插入數(shù)據(jù)時觸發(fā)??
  • ????UPDATE??修改表或視圖中的數(shù)據(jù)時觸發(fā)??
  • ????DELETE??在刪除表或視圖中的數(shù)據(jù)時觸發(fā)??
  • DDL事件(3種)???CREATE??在創(chuàng)建新對象時觸發(fā)??
  • ????ALTER???修改數(shù)據(jù)庫或數(shù)據(jù)庫對象時觸發(fā)??
  • ????DROP????刪除對象時觸發(fā)??
  • 數(shù)據(jù)庫事件(5種)???STARTUP?數(shù)據(jù)打開時觸發(fā)??
  • ????SHUTDOWN????在使用NORMAL或IMMEDIATE選項關(guān)閉數(shù)據(jù)庫時觸發(fā)??
  • ????LOGON???當(dāng)用戶連接到數(shù)據(jù)庫并建立會話時觸發(fā)??
  • ????LOGOFF??當(dāng)一個會話從數(shù)據(jù)庫中斷開時觸發(fā)??
  • ????SERVERERROR?發(fā)生服務(wù)器錯誤時觸發(fā)??

  • 觸發(fā)器的類型可劃分為4種:數(shù)據(jù)操縱語言(DML)觸發(fā)器、替代(INSTEAD OF)觸發(fā)器、數(shù)據(jù)定義語言(DDL)觸發(fā)器和數(shù)據(jù)庫事件觸發(fā)器。?
    各類觸發(fā)器的作用如下所示。?
    Sql代碼??
  • 種??類????簡??稱????作????用??
  • 數(shù)據(jù)操縱語言觸發(fā)器???DML觸發(fā)器??創(chuàng)建在表上,由DML事件引發(fā)的觸發(fā)器??
  • 替代觸發(fā)器???INSTEAD?OF觸發(fā)器???創(chuàng)建在視圖上,用來替換對視圖進(jìn)行的插入、刪除和修改操作??
  • 數(shù)據(jù)定義語言觸發(fā)器???DDL觸發(fā)器??定義在模式上,觸發(fā)事件是數(shù)據(jù)庫對象的創(chuàng)建和修改??
  • 數(shù)據(jù)庫事件觸發(fā)器????—???定義在整個數(shù)據(jù)庫或模式上,觸發(fā)事件是數(shù)據(jù)庫事件??

  • DML觸發(fā)器的要點(diǎn) ?
    DML觸發(fā)器是定義在表上的觸發(fā)器,由DML事件引發(fā)。編寫DML觸發(fā)器的要素是:?
    * 確定觸發(fā)的表,即在其上定義觸發(fā)器的表。?
    * 確定觸發(fā)的事件,DML觸發(fā)器的觸發(fā)事件有INSERT、UPDATE和DELETE三種,說明見下。?
    * 確定觸發(fā)時間。觸發(fā)的時間有BEFORE和AFTER兩種,分別表示觸發(fā)動作發(fā)生在DML語句執(zhí)行之前和語句執(zhí)行之后。?
    * 確定觸發(fā)級別,有語句級觸發(fā)器和行級觸發(fā)器兩種。語句級觸發(fā)器表示SQL語句只觸發(fā)一次觸發(fā)器,行級觸發(fā)器表示SQL語句影響的每一行都要觸發(fā)一次。?
    由于在同一個表上可以定義多個DML觸發(fā)器,因此觸發(fā)器本身和引發(fā)觸發(fā)器的SQL語句在執(zhí)行的順序上有先后的關(guān)系。它們的順序是:?
    * 如果存在語句級BEFORE觸發(fā)器,則先執(zhí)行一次語句級BEFORE觸發(fā)器。?
    * 在SQL語句的執(zhí)行過程中,如果存在行級BEFORE觸發(fā)器,則SQL語句在對每一行操作之前,都要先執(zhí)行一次行級BEFORE觸發(fā)器,然后才對行進(jìn)行操作。如果存在行級AFTER觸發(fā)器,則SQL語句在對每一行操作之后,都要再執(zhí)行一次行級AFTER觸發(fā)器。?
    * 如果存在語句級AFTER觸發(fā)器,則在SQL語句執(zhí)行完畢后,要最后執(zhí)行一次語句級AFTER觸發(fā)器。?
    DML觸發(fā)器還有一些具體的問題,說明如下:?
    * 如果有多個觸發(fā)器被定義成為相同時間、相同事件觸發(fā),且最后定義的觸發(fā)器是有效的,則最后定義的觸發(fā)器被觸發(fā),其他觸發(fā)器不執(zhí)行。?
    * 一個觸發(fā)器可由多個不同的DML操作觸發(fā)。在觸發(fā)器中,可用INSERTING、DELETING、UPDATING謂詞來區(qū)別不同的DML操作。這些謂詞可以在IF分支條件語句中作為判斷條件來使用。?
    * 在行級觸發(fā)器中,用:new 和:old(稱為偽記錄)來訪問數(shù)據(jù)變更前后的值。但要注意,INSERT語句插入一條新記錄,所以沒有:old記錄,而DELETE語句刪除掉一條已經(jīng)存在的記錄,所以沒有:new記錄。UPDATE語句既有:old記錄,也有:new記錄,分別代表修改前后的記錄。引用具體的某一列的值的方法是:?
    ??????? ld.字段名或:new.字段名?
    * 觸發(fā)器體內(nèi)禁止使用COMMIT、ROLLBACK、SAVEPOINT語句,也禁止直接或間接地調(diào)用含有上述語句的存儲過程。?
    定義一個觸發(fā)器時要考慮上述多種情況,并根據(jù)具體的需要來決定觸發(fā)器的種類。?
    DML觸發(fā)器的創(chuàng)建 ?
    創(chuàng)建DML觸發(fā)器需要CREATE TRIGGER系統(tǒng)權(quán)限。創(chuàng)建DML觸發(fā)器的語法如下:?
    CREATE [OR REPLACE] TRIGGER 觸發(fā)器名?
    {BEFORE|AFTER|INSTEAD OF} 觸發(fā)事件1 [OR 觸發(fā)事件2...]?
    ON 表名?
    WHEN 觸發(fā)條件?
    [FOR EACH ROW]?
    DECLARE?
    聲明部分?
    BEGIN?
    主體部分?
    END;?
    其中:?
    OR REPLACE:表示如果存在同名觸發(fā)器,則覆蓋原有同名觸發(fā)器。?
    BEFORE、AFTER和INSTEAD OF:說明觸發(fā)器的類型。?
    WHEN 觸發(fā)條件:表示當(dāng)該條件滿足時,觸發(fā)器才能執(zhí)行。?
    觸發(fā)事件:指INSERT、DELETE或UPDATE事件,事件可以并行出現(xiàn),中間用OR連接。?
    對于UPDATE事件,還可以用以下形式表示對某些列的修改會引起觸發(fā)器的動作:?
    UPDATE OF 列名1,列名2...?
    ON 表名:表示為哪一個表創(chuàng)建觸發(fā)器。?
    FOR EACH ROW:表示觸發(fā)器為行級觸發(fā)器,省略則為語句級觸發(fā)器。?
    觸發(fā)器的創(chuàng)建者或具有DROP ANY TIRGGER系統(tǒng)權(quán)限的人才能刪除觸發(fā)器。刪除觸發(fā)器的語法如下:?
    DROP TIRGGER 觸發(fā)器名?
    可以通過命令設(shè)置觸發(fā)器的可用狀態(tài),使其暫時關(guān)閉或重新打開,即當(dāng)觸發(fā)器暫時不用時,可以將其置成無效狀態(tài),在使用時重新打開。該命令語法如下:?
    ALTER TRIGGER 觸發(fā)器名 {DISABLE|ENABLE}?
    其中,DISABLE表示使觸發(fā)器失效,ENABLE表示使觸發(fā)器生效。?
    同存儲過程類似,觸發(fā)器可以用SHOW ERRORS 檢查編譯錯誤。?
    行級觸發(fā)器的應(yīng)用 ?
    在行級觸發(fā)器中,SQL語句影響的每一行都會觸發(fā)一次觸發(fā)器,所以行級觸發(fā)器往往用在對表的每一行的操作進(jìn)行控制的場合。若在觸發(fā)器定義中出現(xiàn)FOR EACH ROW子句,則為語句級觸發(fā)器。?
    【訓(xùn)練1】? 創(chuàng)建包含插入、刪除、修改多種觸發(fā)事件的觸發(fā)器DML_LOG,對EMP表的操作進(jìn)行記錄。用INSERTING、DELETING、UPDATING謂詞來區(qū)別不同的DML操作。?
    在創(chuàng)建觸發(fā)器之前,需要先創(chuàng)建事件記錄表LOGS,該表用來對操作進(jìn)行記錄。該表的字段含義解釋如下:?
    LOG_ID:操作記錄的編號,數(shù)值型,它是該表的主鍵,由序列自動生成。?
    LOG_TABLE:進(jìn)行操作的表名,字符型,非空,該表設(shè)計成可以由多個觸發(fā)器共享使用。比如我們可以為dept表創(chuàng)建類似的觸發(fā)器,同樣將操作記錄到該表。?
    LOG_DML:操作的動作,即INSERT、DELETE或UPDATE三種之一。?
    LOG_KEY_ID:操作時表的主鍵值,數(shù)值型。之所以記錄表的主鍵,是因為主鍵是表的記錄的惟一標(biāo)識,可以識別是對哪一條記錄進(jìn)行了操作。對于emp表,主鍵是empno。?
    LOG_DATE:操作的日期,日期型,取當(dāng)前的系統(tǒng)時間。?
    LOG_USER:操作者,字符型,取當(dāng)時的操作者賬戶名。比如登錄SCOTT賬戶進(jìn)行操作,在該字段中,記錄賬戶名為SCOTT。?
    步驟1:在SQL*Plus中登錄STUDENT賬戶,創(chuàng)建如下的記錄表LOGS:?
    Sql代碼??
  • CREATE?TABLE?logs(??
  • ????????LOG_ID?NUMBER(10)?PRIMARY?KEY,??
  • ????????LOG_TABLE?VARCHAR2(10)?NOT?NULL,??
  • ????????LOG_DML?VARCHAR2(10),??
  • ????????LOG_KEY_ID?NUMBER(10),??
  • ????????LOG_DATE?DATE,??
  • ????????LOG_USER?VARCHAR2(15)??
  • ????????);??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 表已創(chuàng)建。??

  • 步驟2:創(chuàng)建一個LOGS表的主鍵序列LOGS_ID_SEQ:?
    Sql代碼??
  • CREATE?SEQUENCE?logs_id_squ?INCREMENT?BY?1???
  • ????????START?WITH?1?MAXVALUE?9999999?NOCYCLE?NOCACHE;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 序列已創(chuàng)建。??

  • 步驟3:創(chuàng)建和編譯以下觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?DML_LOG??
  • ????????BEFORE?--觸發(fā)時間為操作前??
  • ????????DELETE?OR?INSERT?OR?UPDATE?--?由三種事件觸發(fā)??
  • ????????ON?emp??
  • ????????FOR?EACH?ROW?--?行級觸發(fā)器??
  • ????????BEGIN??
  • IF?INSERTING?THEN???
  • ????????INSERT?INTO?logs????????VALUES(logs_id_squ.NEXTVAL,'EMP','INSERT',:new.empno,SYSDATE,USER);??
  • ?????????ELSIF?DELETING?THEN??
  • ?????????INSERT?INTO?logs???????VALUES(logs_id_squ.NEXTVAL,'EMP','DELETE',:old.empno,SYSDATE,USER);??
  • ?????????ELSE??
  • ?????????????INSERT?INTO?logs???????VALUES(logs_id_squ.NEXTVAL,'EMP','UPDATE',:new.empno,SYSDATE,USER);??
  • ????????END?IF;??
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    觸發(fā)器已創(chuàng)建?
    步驟4:在EMP表中插入記錄:?
    Sql代碼??
  • INSERT?INTO?emp(empno,ename,job,sal)?VALUES(8001,'MARY','CLERK',1000);??
  • ????????COMMIT;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 已創(chuàng)建1行。??
  • ????????提交完成。??

  • 步驟5:檢查LOGS表中記錄的信息:?
    Sql代碼??
  • SELECT?*?FROM?LOGS;??

  • 執(zhí)行結(jié)果為:?
    ??? Sql代碼??
  • LOG_ID?LOG_TABLE??LOG_DML????LOG_KEY_ID?LOG_DATE???LOG_USER??
  • ????????-----------------?-----------------?------------------?-----------------------?----------------?-------------------??
  • ??????????1?EMP?????????INSERT????????????8001????29-3月?-04?????STUDENT??
  • ????????已選擇?1?行。??

  • 說明:本例中在emp表上創(chuàng)建了一個由INSERT或DELETE或UPDATE事件觸發(fā)的行級觸發(fā)器,觸發(fā)器的名稱是LOG_EMP。對于不同的操作,記錄的內(nèi)容不同。本例中只插入了一條記錄,如果用一條不帶WHERE條件的UPDATE語句來修改所有雇員的工資,則將逐行觸發(fā)觸發(fā)器。?
    INSERT、DELETE和UPDATE都能引發(fā)觸發(fā)器動作,在分支語句中使用INSERTING、DELETING和UPDATING來區(qū)別是由哪種操作引發(fā)的觸發(fā)器動作。?
    在本例的插入動作中,LOG_ID字段由序列LOG_ID_SQU自動填充為1;LOGS表LOG_KEY_ID字段記錄的是新插入記錄的主鍵8001;LOD_DML字段記錄的是插入動作INSERT;LOG_TABLE字段記錄當(dāng)前表名EMP;LOG_DATE字段記錄插入的時間04年3月1日;LOG_USER字段記錄插入者STUDENT。?
    【練習(xí)1】修改、刪除剛剛插入的雇員記錄,提交后檢查LOGS表的結(jié)果。?
    【練習(xí)2】為DEPT表創(chuàng)建同樣的觸發(fā)器,使用LOGS表進(jìn)行記錄,并檢驗結(jié)果。?
    【訓(xùn)練2】? 創(chuàng)建一個行級觸發(fā)器LOG_SAL,記錄對職務(wù)為CLERK的雇員工資的修改,且當(dāng)修改幅度超過200時才進(jìn)行記錄。用WHEN條件限定觸發(fā)器。?
    在創(chuàng)建觸發(fā)器之前,需要先創(chuàng)建事件記錄表LOGERR,該表用來對操作進(jìn)行記錄。該表的字段含義解釋如下:?
    NUM:數(shù)值型,用于記錄序號。?
    MESSAGE:字符型,用于記錄錯誤信息。?
    步驟1:在SQL*Plus中登錄STUDENT賬戶,創(chuàng)建如下的記錄表LOGERR:?
    Sql代碼??
  • CREATE?TABLE?logerr(??
  • ????????NUM?NUMBER(10)?NOT?NULL,??
  • ????????MESSAGE?VARCHAR2(50)?NOT?NULL??
  • ????????);??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 表已創(chuàng)建。??

  • 步驟2:創(chuàng)建和編譯以下觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?log_sal??
  • ????????BEFORE??
  • ????????UPDATE?OF?sal??
  • ????????ON?emp??
  • ????????FOR?EACH?ROW??
  • ????????WHEN?(new.job='CLERK'?AND?(ABS(new.sal-old.sal)>200))???
  • DECLARE???
  • ????????v_no?NUMBER;??
  • ????????BEGIN??
  • ????????SELECT?COUNT(*)?INTO?v_no?FROM?logerr;???
  • ????????INSERT?INTO?logerr?VALUES(v_no+1,'雇員'||:new.ename||'的原工資:'||:old.sal||'新工資:'||:new.sal);??
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟3:在EMP表中更新記錄:?
    Sql代碼??
  • UPDATE?emp?SET?sal=sal+550?WHERE?empno=7788;??
  • ????????UPDATE?emp?SET?sal=sal+500?WHERE?empno=7369;??
  • ????????UPDATE?emp?SET?sal=sal+50?WHERE?empno=7876;??
  • ????????COMMIT;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 已更新?1?行。??
  • ????????已更新?1?行。??
  • ????????已更新?1?行。??
  • ????????提交完成。??

  • 步驟4:檢查LOGSAL表中記錄的信息:?
    Sql代碼??
  • SELECT?*?FROM?logerr;??

  • 執(zhí)行結(jié)果為:
    ?????? Sql代碼??
  • NUM?MESSAGE??
  • ------------------?--------------------------------------------------------??
  • ?????????????1?雇員SMITH的原工資:800新工資:1300??
  • ????????已選擇?1?行。??

  • ? 說明:本例中,在emp表的sal列上創(chuàng)建了一個由UPDATE事件觸發(fā)的行級觸發(fā)器,觸發(fā)器的名稱是LOG_SAL。該觸發(fā)器由WHEN語句限定,只有當(dāng)被修改工資的雇員職務(wù)為CLERK,且修改的工資超過200時才進(jìn)行觸發(fā),否則不進(jìn)行觸發(fā)。?
    所以在驗證過程中,雖然修改了3條記錄,但通過查詢語句發(fā)現(xiàn):第一條修改語句修改編號為7788的SCOTT記錄,因為SCOTT的職務(wù)是ANALYST,不符合WHEN條件,沒有引起觸發(fā)器動作;第二條修改語句修改編號為7369的SMITH的記錄,職務(wù)為CLERK,因為增加的工資(500)超過了200,所以引起觸發(fā)器動作,并在LOGERR表中進(jìn)行了記錄;第三條修改語句修改編號為7876的雇員ADAMS的記錄,雖然ADAMS的職務(wù)為CLERK,但修改的工資(50)沒有超過200,所以沒有引起觸發(fā)器動作。?
    注意:在WHEN條件中引用new和old不需要在前面加“: ”。?
    在以上實(shí)例中,記錄了對工資的修改超出范圍的信息,但沒有限制對工資的修改。那么當(dāng)對雇員工資的修改幅度不滿足條件時,能否直接限制對工資的修改呢?答案是肯定的。?
    【訓(xùn)練3】? 創(chuàng)建觸發(fā)器CHECK_SAL,當(dāng)對職務(wù)為CLERK的雇員的工資修改超出500至2000的范圍時,進(jìn)行限制。?
    步驟1:創(chuàng)建和編譯以下觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?CHECK_SAL??
  • ????????BEFORE??
  • ????????UPDATE??
  • ????????ON?emp??
  • ????????FOR?EACH?ROW??
  • ????????BEGIN??
  • IF?:new.job='CLERK'?AND?(:new.sal<500?OR?:new.sal>2000)?THEN??
  • ?????????RAISE_APPLICATION_ERROR(-20001,?'工資修改超出范圍,操作取消!');??
  • ????????END?IF;??
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟2:在EMP表中插入記錄:?
    Sql代碼??
  • UPDATE?emp?SET?sal=800?WHERE?empno=7876;??
  • ????????UPDATE?emp?SET?sal=450?WHERE?empno=7876;??
  • ????????COMMIT;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • UPDATE?emp?SET?sal=450?WHERE?empno=7876??
  • ????????????????*??
  • ????????ERROR?位于第?1?行:??
  • ????????ORA-20001:?工資修改超出范圍,操作取消!??
  • ????????ORA-06512:?在"STUDENT.CHECK_SAL",?line?3??
  • ????????ORA-04088:?觸發(fā)器?'STUDENT.CHECK_SAL'?執(zhí)行過程中出錯提交完成。??

  • 步驟3:檢查工資的修改結(jié)果:?
    Sql代碼??
  • SELECT?empno,ename,job,sal?FROM?emp?WHERE?empno=7876;??

  • 執(zhí)行結(jié)果為:?
    ??? Sql代碼??
  • EMPNO?ENAME??????JOB??????????????SAL??
  • -----------------?-------------?-------------?------------------------??
  • ????????7876??ADAMS??????CLERK????????????800??

  • 說明:在觸發(fā)器中,當(dāng)IF語句的條件滿足時,即對職務(wù)為CLERK的雇員工資的修改超出指定范圍時,用RAISE_APPLICATION_ERROR語句來定義一個臨時定義的異常,并立即引發(fā)異常。由于觸發(fā)器是BEFORE類型,因此觸發(fā)器先執(zhí)行,觸發(fā)器因異常而終止,SQL語句的執(zhí)行就會取消。?
    通過步驟2的執(zhí)行信息可以看到,第一條語句修改編號為7876的雇員ADAMS的工資為800,成功執(zhí)行。第二條語句修改雇員ADAMS的工資為450,發(fā)生異常,執(zhí)行失敗。這樣就阻止了不符合條件的工資的修改。通過步驟3的查詢可以看到,雇員ADAMS最后的工資是800,即發(fā)生異常之前的修改結(jié)果。?
    【練習(xí)3】限定對emp表的修改,只能修改部門10的雇員工資。?
    ?? 【訓(xùn)練4】? 創(chuàng)建一個行級觸發(fā)器CASCADE_UPDATE,當(dāng)修改部門編號時,EMP表的相關(guān)行的部門編號也自動修改。該觸發(fā)器稱為級聯(lián)修改觸發(fā)器。?
    步驟1:創(chuàng)建和編譯以下觸發(fā)器:?
    Sql代碼??
  • CREATE?TRIGGER?CASCADE_UPDATE??
  • AFTER???
  • UPDATE?OF?deptno??
  • ON?DEPT??
  • FOR?EACH?ROW??
  • BEGIN??
  • UPDATEEMP?SET?EMP.DEPTNO=:NEW.DEPTNO??
  • ?????????WHERE?EMP.DEPTNO=:OLD.DEPTNO;??
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建??

  • 步驟2:驗證觸發(fā)器:?
    Sql代碼??
  • UPDATE?dept?SET?deptno=11?WHERE?deptno=10;??
  • ????????COMMIT;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 已更新?1?行。???

  • 執(zhí)行查詢:?
    Sql代碼??
  • SELECT?empno,ename,deptno?FROM?emp;??

  • 執(zhí)行結(jié)果:?
    ?? Sql代碼??
  • ?EMPNO?ENAME??????????DEPTNO??
  • ????-----------------?-----------?-------------------------??
  • ?????????7369?SMITH?????????????????20??
  • ?????????7499?ALLEN?????????????????30??
  • ????????7521?WARD???????????????????30??
  • ????????7566?JONES??????????????????20??
  • 7654?MARTIN?????????????????30??
  • ????????7698?BLAKE??????????????????30??
  • ?????????7782?CLARK?????????????????11??
  • ?????????7839?KING??????????????????11??
  • ????????7844?TURNER?????????????????30??
  • ????????7876?ADAMS??????????????????20??
  • ????????7900?JAMES??????????????????30??
  • ?????????7902?FORD??????????????????20??
  • ?????????7934?MILLER????????????????11??
  • ????????7788?SCOTT??????????????????20??

  • 說明:通過檢查雇員的部門編號,發(fā)現(xiàn)原來編號為10的部門編號被修改為11。?
    本例中的UPDATE OF deptno表示只有在修改表的DEPTNO列時才引發(fā)觸發(fā)器,對其他列的修改不會引起觸發(fā)器的動作。在觸發(fā)器中,對雇員表的部門編號與修改之前的部門編號一樣的雇員,修改其部門編號為新的部門編號。注意,在語句中同時用到了:new和:old來引用修改部門編號前后的部門編號。?
    【練習(xí)4】建立級聯(lián)刪除觸發(fā)器CASCADE_DELETE,當(dāng)刪除部門時,級聯(lián)刪除EMP表的雇員記錄。?
    利用觸發(fā)器還可以修改數(shù)據(jù)。?
    【訓(xùn)練5】? 將插入的雇員的名字變成以大寫字母開頭。?
    步驟1:創(chuàng)建和編譯以下觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?INITCAP??
  • BEFORE?INSERT???
  • ON?EMP??
  • FOR?EACH?ROW??
  • BEGIN??
  • ?:new.ename:=INITCAP(:new.ename);??
  • END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟2:驗證運(yùn)行結(jié)果:?
    Sql代碼??
  • INSERT?INTO?emp(empno,ename,job,sal)?VALUES(1000,'BILL','CLERK',1500);??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 已創(chuàng)建?1?行。??

  • 執(zhí)行查詢:?
    Sql代碼??
  • SELECT?ename,job,sal?FROM?emp?WHERE?empno=1000;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • ENAME??????JOB??????????????SAL??
  • ????????-------------?-------------?------------------------??
  • ????????Bill??????????CLERK???????????1500??

  • 說明:在本例中,通過直接為:new.ename進(jìn)行賦值,修改了插入的值,但是這種用法只能在BEFORE型觸發(fā)器中使用。驗證結(jié)果為,在插入語句中雇員名稱為大寫的BILL,查詢結(jié)果中雇員名稱已經(jīng)轉(zhuǎn)換成以大寫開頭的Bill。?
    【練習(xí)5】限定一次對雇員的工資修改不超過原工資的10%。?
    語句級觸發(fā)器的應(yīng)用 ?
    同行級觸發(fā)器不同,語句級觸發(fā)器的每個操作語句不管操作的行數(shù)是多少,只觸發(fā)一次觸發(fā)器,所以語句級觸發(fā)器適合于對整個表的操作權(quán)限等進(jìn)行控制。在觸發(fā)器定義中若省略FOR EACH ROW子句,則為語句級觸發(fā)器。?
    【訓(xùn)練1】? 創(chuàng)建一個語句級觸發(fā)器CHECK_TIME,限定對表EMP的修改時間為周一至周五的早8點(diǎn)至晚5點(diǎn)。?
    步驟1:創(chuàng)建和編譯以下觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?CHECK_TIME??
  • BEFORE??
  • UPDATE?OR?INSERT?OR?DELETE???
  • ON?EMP??
  • BEGIN??
  • ?IF?(TO_CHAR(SYSDATE,'DY')?IN?('SAT','SUN'))???
  • ?OR?TO_CHAR(SYSDATE,'HH24')<?'08'???
  • ?OR?TO_CHAR(SYSDATE,'HH24')>='17'?THEN??
  • RAISE_APPLICATION_ERROR(-20500,'非法時間修改表錯誤!');??
  • ?????????END?IF;???
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟2:當(dāng)前時間為18點(diǎn)50分,在EMP表中插入記錄:?
    Sql代碼??
  • UPDATE?EMP?SET?SAL=3000?WHERE?EMPNO=7369;??

  • 顯示結(jié)果為:?
    Sql代碼??
  • UPDATE?EMP?SET?SAL=3000?WHERE?EMPNO=7369??
  • ???????????????????????????????????????*??
  • ERROR?位于第?1?行:??
  • ????????ORA-20500:?非法時間修改表錯誤!??
  • ????????ORA-06512:?在"STUDENT.CHECK_TIME",?line?5??
  • ????????ORA-04088:?觸發(fā)器?'STUDENT.CHECK_TIME'?執(zhí)行過程中出錯??

  • ? 說明:通過引發(fā)異常限制對數(shù)據(jù)庫進(jìn)行的插入、刪除和修改操作的時間。SYSDATE用來獲取系統(tǒng)當(dāng)前時間,并按不同的格式字符串進(jìn)行轉(zhuǎn)換。“DY”表示獲取英文表示的星期簡寫,“HH24”表示獲取24小時制時間的小時。?
    當(dāng)在18點(diǎn)50分修改表中的數(shù)據(jù)時,由于時間在8點(diǎn)至17點(diǎn)(晚5點(diǎn))之外,所以產(chǎn)生“非法時間修改表錯誤”的用戶自定義錯誤,修改操作終止。?
    【練習(xí)1】設(shè)計一個語句級觸發(fā)器,限定只能對數(shù)據(jù)庫進(jìn)行修改操作,不能對數(shù)據(jù)庫進(jìn)行插入和刪除操作。在需要進(jìn)行插入和刪除時,將觸發(fā)器設(shè)置為無效狀態(tài),完成后重新設(shè)置為生效狀態(tài)。?
    數(shù)據(jù)庫事件觸發(fā)器 ?
    數(shù)據(jù)庫事件觸發(fā)器有數(shù)據(jù)庫級和模式級兩種。前者定義在整個數(shù)據(jù)庫上,觸發(fā)事件是數(shù)據(jù)庫事件,如數(shù)據(jù)庫的啟動、關(guān)閉,對數(shù)據(jù)庫的登錄或退出。后者定義在模式上,觸發(fā)事件包括模式用戶的登錄或退出,或?qū)?shù)據(jù)庫對象的創(chuàng)建和修改(DDL事件)。?
    數(shù)據(jù)庫事件觸發(fā)器的觸發(fā)事件的種類和級別如表9-3所示。?
    Sql代碼??
  • 種??類????關(guān)?鍵?字???說????明??
  • 模式級?CREATE??在創(chuàng)建新對象時觸發(fā)??
  • ????ALTER???修改數(shù)據(jù)庫或數(shù)據(jù)庫對象時觸發(fā)??
  • ????DROP????刪除對象時觸發(fā)??
  • 數(shù)據(jù)庫級????STARTUP?數(shù)據(jù)庫打開時觸發(fā)??
  • ????SHUTDOWN????在使用NORMAL或IMMEDIATE選項關(guān)閉數(shù)據(jù)庫時觸發(fā)??
  • ????SERVERERROR?????發(fā)生服務(wù)器錯誤時觸發(fā)??
  • 數(shù)據(jù)庫級與模式級????LOGON???當(dāng)用戶連接到數(shù)據(jù)庫,建立會話時觸發(fā)??
  • ????LOGOFF??當(dāng)會話從數(shù)據(jù)庫中斷開時觸發(fā)??

  • 定義數(shù)據(jù)庫事件和模式事件觸發(fā)器 ?
    創(chuàng)建數(shù)據(jù)庫級觸發(fā)器需要ADMINISTER DATABASE TRIGGER系統(tǒng)權(quán)限,一般只有系統(tǒng)管理員擁有該權(quán)限。?
    對于模式級觸發(fā)器,為自己的模式創(chuàng)建觸發(fā)器需要CREATE TRIGGER權(quán)限,如果是為其他模式創(chuàng)建觸發(fā)器,需要CREATE ANY TRIGGER權(quán)限。?
    數(shù)據(jù)庫事件和模式事件觸發(fā)器的創(chuàng)建語法與DML觸發(fā)器的創(chuàng)建語法類似。數(shù)據(jù)庫事件或模式事件觸發(fā)器的創(chuàng)建語法如下:?
    CREATE [OR REPLACE] TRIGGER 觸發(fā)器名?
    {BEFORE|AFTER }?
    {DDL事件1 [DDL事件2...]| 數(shù)據(jù)庫事件1 [數(shù)據(jù)庫事件2...]}?
    ON {DATABASE| [模式名.]SCHEMA }?
    [WHEN (條件)]?
    DECLARE?
    聲明部分?
    BEGIN?
    主體部分?
    END;?
    其中:DATABASE表示創(chuàng)建數(shù)據(jù)庫級觸發(fā)器,數(shù)據(jù)庫級要給出數(shù)據(jù)庫事件;SCHEMA表示創(chuàng)建模式級觸發(fā)器,模式級要給出模式事件或DDL事件。?
    在數(shù)據(jù)庫事件觸發(fā)器中,可以使用如表9-4所示的一些事件屬性。不同類型的觸發(fā)器可以使用的事件屬性有所不同。?
    Sql代碼??
  • 屬??性????適用觸發(fā)器類型?說????明??
  • Sys.sysevent????所有類型????返回觸發(fā)器觸發(fā)事件字符串??
  • Sys.instance_num????所有類型????返回Oracle實(shí)例號??
  • Sys.database_name???所有類型????返回數(shù)據(jù)庫名字??
  • Sys.server_error(stack_position)????SERVERERROR?從錯誤堆棧指定位置返回錯誤號,參數(shù)為1表示最近的錯誤??
  • Is_servererror(error_number)????SERVERERROR?判斷堆棧中是否有參數(shù)指定的錯誤號??
  • Sys.login_user??所有類型????返回導(dǎo)致觸發(fā)器觸發(fā)的用戶名??
  • Sys.dictionary_obj_type?CREATEALTERDROP???返回DDL觸發(fā)器觸發(fā)時涉及的對象類型??
  • Sys.?dictionary_obj_name????CREATEALTERDROP???返回DDL觸發(fā)器觸發(fā)時涉及的對象名稱??
  • Sys.des_encrypted_password??CREATEALTERDROP???創(chuàng)建或修改用戶時,返回加密后的用戶密碼??

  • 數(shù)據(jù)庫事件觸發(fā)器 ?
    下面是一個綜合的數(shù)據(jù)庫事件觸發(fā)器練習(xí)。先為STUDENT賬戶授予創(chuàng)建數(shù)據(jù)庫事件觸發(fā)器的權(quán)限,ADMINISTER DATABASE TRIGGER,然后創(chuàng)建有關(guān)的表和觸發(fā)器,最后予以驗證。?
    ? 【訓(xùn)練1】? 創(chuàng)建觸發(fā)器,對本次數(shù)據(jù)庫啟動以來的用戶登錄時間進(jìn)行記錄,每次數(shù)據(jù)庫啟動后,先清空該表。?
    步驟1:創(chuàng)建登錄事件記錄表:?
    Sql代碼??
  • CREATE?TABLE?userlog?(??
  • USERNAME?VARCHAR2(20),??
  • LOGON_TIME?DATE);??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 表已創(chuàng)建。??

  • 步驟2:創(chuàng)建數(shù)據(jù)庫STARTUP事件觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?INIT_LOGON??
  • AFTER??
  • STARTUP???
  • ON?DATABASE??
  • BEGIN??
  • ?DELETE?FROM?userlog;??
  • END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟3:創(chuàng)建數(shù)據(jù)庫LOGON事件觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?DATABASE_LOGON??
  • AFTER??
  • LOGON???
  • ON?DATABASE??
  • BEGIN??
  • ?INSERT?INTO?userlog???
  • ?VALUES(sys.login_user,sysdate);??
  • END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟4:驗證DATABASE_LOGON觸發(fā)器:?
    Sql代碼??
  • CONNECT?SCOTT/TIGER@MYDB;??
  • ????????CONNECT?STUDENT/STUDENT@MYDB;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 已連接。??
  • 已連接。??

  • 執(zhí)行查詢:?
    Sql代碼??
  • SELECT?username,TO_CHAR(logon_time,'YYYY/MM/DD?HH24:MI:SS')?FROM?userlog;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • USERNAME?????????????TO_CHAR(LOGON_TIME,??
  • -----------------------------?-----------------------------------------??
  • SCOTT???????????????????2004/03/29?22:42:20??
  • ????????STUDENT?????????????????2004/03/29?22:42:20??

  • 步驟5:驗證INIT_LOGON觸發(fā)器。?
    重新啟動數(shù)據(jù)庫,登錄STUDENT賬戶:?
    Sql代碼??
  • SELECT?username,TO_CHAR(logon_time,'YYYY/MM/DD?HH24:MI:SS')?FROM?userlog;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • USERNAME?????????????TO_CHAR(LOGON_TIME,??
  • --------------------------------?---------------------------------------??
  • ????????STUDENT??????????????2004/03/29?22:43:59??
  • ????????已選擇?1?行??

  • 說明:本例中共創(chuàng)建了兩個數(shù)據(jù)庫級事件觸發(fā)器。DATABASE_LOGON在用戶登錄時觸發(fā),向表userlog中增加一條記錄,記錄登錄用戶名和登錄時間。INIT_LOGON在數(shù)據(jù)庫啟動時觸發(fā),清除userlog表中記錄的數(shù)據(jù)。所以當(dāng)數(shù)據(jù)庫重新啟動后,重新登錄STUDENT賬戶,此時userlog表中只有一條記錄。?
    【訓(xùn)練2】? 創(chuàng)建STUDENT_LOGON模式級觸發(fā)器,專門記錄STUDENT賬戶的登錄時間:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?STUDENT_LOGON???
  • AFTER??
  • LOGON?ON?STUDENT.SCHEMA???
  • BEGIN????
  • ?INSERT?INTO?userlog??
  • ?VALUES(sys.login_user,sysdate);??
  • END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 說明:為當(dāng)前模式創(chuàng)建觸發(fā)器,可以省略SCHEMA前面的模式名。?
    【練習(xí)1】修改DATABASE_LOGON觸發(fā)器和userlog表,增加對退出時間的記錄。?
    DDL事件觸發(fā)器 ?
    【訓(xùn)練1】? 通過觸發(fā)器阻止對emp表的刪除。?
    步驟1:創(chuàng)建DDL觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?NODROP_EMP??
  • ?????????BEFORE??
  • ????????DROP?ON?SCHEMA???
  • ????????BEGIN??
  • ????????IF?Sys.Dictionary_obj_name='EMP'?THEN??
  • RAISE_APPLICATION_ERROR(-20005,'錯誤信息:不能刪除emp表!');??
  • ?????????END?IF;???
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟2:通過刪除emp表驗證觸發(fā)器:?
    Sql代碼??
  • DROP?TABLE?emp;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • DROP?TABLE?emp??
  • ????????*??
  • ERROR?位于第?1?行:??
  • ????????ORA-00604:?遞歸?SQL?層?1?出現(xiàn)錯誤??
  • ????????ORA-20005:?錯誤信息:不能刪除emp表!??
  • ????????ORA-06512:?在line?3??

  • ? ?? 說明:該觸發(fā)器阻止在當(dāng)前模式下對emp表的刪除,但不阻止刪除其他對象。Sys.Dictionary_obj_name屬性返回要刪除的對象名稱。?
    替代觸發(fā)器 ?
    【訓(xùn)練1】? 在emp表的視圖上,通過觸發(fā)器修改emp表。?
    步驟1:創(chuàng)建視圖emp_name:?
    Sql代碼??
  • CREATE?VIEW?emp_name?AS?SELECT?ename?FROM?emp;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 視圖已建立。??

  • 步驟1:創(chuàng)建替代觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?change_name??
  • ????????INSTEAD?OF?INSERT?ON?emp_name??
  • ????????DECLARE??
  • V_EMPNO?NUMBER(4);??
  • ????????BEGIN??
  • ????????SELECT?MAX(EMPNO)+1?INTO?V_EMPNO?FROM?EMP;??
  • ????????INSERT?INTO?emp(empno,ename)???
  • ????????VALUES(V_EMPNO,:new.ename);??
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟2:向emp_name視圖插入記錄:?
    Sql代碼??
  • INSERT?INTO?emp_name?VALUES('BROWN');??
  • ????????COMMIT;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 已創(chuàng)建?1?行。??
  • ????????提交完成。??

  • ? 說明:向視圖直接插入雇員名將會發(fā)生錯誤,因為emp表的雇員編號列不允許為空。通過創(chuàng)建替代觸發(fā)器,將向視圖插入雇員名稱轉(zhuǎn)換為向emp表插入雇員編號和雇員名稱,雇員編號取當(dāng)前的最大雇員編號加1。試檢查emp表的雇員列表。?
    【訓(xùn)練2】? 在emp表的視圖emp_name上,通過觸發(fā)器阻止對emp表的刪除。?
    步驟1:阻止通過視圖刪除雇員,并顯示用戶自定義錯誤信息:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?delete_from_ename??
  • ????????INSTEAD?OF?DELETE?ON?emp_name??
  • ????????BEGIN??
  • ?????????RAISE_APPLICATION_ERROR(-20006,'錯誤信息:不能在視圖中刪除emp表的雇員!');??
  • ????????END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟2:通過對視圖進(jìn)行刪除來驗證觸發(fā)器:?
    Sql代碼??
  • DELETE?FROM?emp_name;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • DELETE?FROM?emp_name??
  • ????????????????*??
  • ????????ERROR?位于第?1?行:??
  • ????????ORA-20006:?錯誤信息:不能在視圖中刪除emp表的雇員!??
  • ????????ORA-06512:???
  • ????????在"STUDENT.DELETE_FROM_ENAME",?line?2??
  • ????????ORA-04088:?觸發(fā)器?'STUDENT.DELETE_FROM_ENAME'?執(zhí)行過程中出錯??

  • 說明:可以通過視圖emp_name對雇員進(jìn)行刪除,比如執(zhí)行DELETE FROM emp_name語句將刪除雇員表的全部雇員。但是由于在emp_name視圖中只能看到一部分雇員信息,所以刪除可能會產(chǎn)生誤操作。通過定義一個替代觸發(fā)器,可阻止通過emp_name視圖對emp表雇員進(jìn)行刪除,但不阻止直接對emp表進(jìn)行刪除。?
    查看觸發(fā)器 ?
    【訓(xùn)練1】? 顯示觸發(fā)器CHECK_TIME的體部分:?
    Sql代碼??
  • SELECT?TRIGGER_BODY?FROM?USER_TRIGGERS?WHERE?TRIGGER_NAME='CHECK_TIME';??

  • 結(jié)果為:?
    Sql代碼??
  • TRIGGER_BODY??
  • ????????----------------------------------------------------------------------------------------??
  • ????????BEGIN??
  • ????????IF?(TO_CHAR(SYSDATE,'DY')?IN?('SAT','SUN'))??
  • ?????????OR?TO_CHAR(SYSDATE,'HH24')<??
  • ???????TRIGGER_BODY字段為LONG類型,只顯示出腳本的一部分內(nèi)容。??

  • 階段訓(xùn)練 ?
    【訓(xùn)練1】? 創(chuàng)建觸發(fā)器,進(jìn)行表的同步復(fù)制。?
    步驟1:創(chuàng)建emp表的復(fù)本employee:?
    Sql代碼??
  • CREATE?TABLE?employee?AS?SELECT?*?FROM?emp;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 表已創(chuàng)建。???

  • 步驟2:創(chuàng)建和編譯以下觸發(fā)器:?
    Sql代碼??
  • CREATE?OR?REPLACE?TRIGGER?DUPLICATE_EMP??
  • ????????AFTER???
  • ????????UPDATE?OR?INSERT?OR?DELETE??
  • ????????ON?EMP??
  • ????????FOR?EACH?ROW??
  • ????????BEGIN?????
  • ?????????IF?INSERTING?THEN???
  • ?????????INSERT?INTO?employee???
  • ?????????VALUES(:new.empno,:new.ename,:new.job,:new.mgr,??
  • ???????????:new.hiredate,:new.sal,:new.comm,:new.deptno);??
  • ELSIF?DELETING?THEN??
  • ??DELETE?FROM?employee???
  • ??WHERE?empno=:old.empno;??
  • ?ELSE??
  • ??UPDATE?employee?SET???
  • ??empno=:new.empno,??
  • ??ename=:new.ename,??
  • ??job=:new.job,??
  • mgr=:new.mgr,??
  • ??hiredate=:new.hiredate,??
  • ??sal=:new.sal,??
  • ??comm=:new.comm,??
  • ??deptno=:new.deptno??
  • ??WHERE?empno=:old.empno;??
  • ?END?IF;??
  • END;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 觸發(fā)器已創(chuàng)建。??

  • 步驟3:對emp表進(jìn)行插入、刪除和更新:?
    Sql代碼??
  • DELETE?FROM?emp?WHERE?empno=7934;??
  • ????????INSERT?INTO?emp(empno,ename,job,sal)????????VALUES(8888,'ROBERT','ANALYST',2900);??
  • ????????UPDATE?emp?SET?sal=3900?WHERE?empno=7788;??
  • ????????COMMIT;??

  • 執(zhí)行結(jié)果:?
    Sql代碼??
  • 已刪除?1?行。??
  • 已創(chuàng)建?1?行。??
  • 已更新?1?行。??
  • 提交完成。???

  • 步驟4:檢查emp表和employee表中被插入、刪除和更新的雇員。?
    運(yùn)行結(jié)果略,請自行驗證。?
    ? 說明:在觸發(fā)器中判斷觸發(fā)事件,根據(jù)不同的事件對employee表進(jìn)行不同的操作。?
    【練習(xí)1】創(chuàng)建一個emp表的觸發(fā)器EMP_TOTAL,每當(dāng)向雇員表插入、刪除或更新雇員信息時,將新的統(tǒng)計信息存入統(tǒng)計表EMPTOTAL,使統(tǒng)計表總能夠反映最新的統(tǒng)計信息。?
    統(tǒng)計表是記錄各部門雇員總?cè)藬?shù)、總工資的統(tǒng)計表,結(jié)構(gòu)如下:?
    部門編號 number(2)?
    總?cè)藬?shù) number(5)?
    總工資 number(10,2)?
    練習(xí) ?
    1. 下列有關(guān)觸發(fā)器和存儲過程的描述,正確的是:?
    A. 兩者都可以傳遞參數(shù)?
    B. 兩者都可以被其他程序調(diào)用?
    C. 兩種模塊中都可以包含數(shù)據(jù)庫事務(wù)語句?
    D. 兩者創(chuàng)建的系統(tǒng)權(quán)限不同?
    2. 下列事件,屬于DDL事件的是:?
    ??? A.? INSERT B.? LOGON?
    ??? C.? DROP D.? SERVERERROR?
    3. 假定在一個表上同時定義了行級和語句級觸發(fā)器,在一次觸發(fā)當(dāng)中,下列說法正確的是:?
    ??? A. 語句級觸發(fā)器只執(zhí)行一次?
    ??? B. 語句級觸發(fā)器先于行級觸發(fā)器執(zhí)行?
    ?????????? C. 行級觸發(fā)器先于語句級觸發(fā)器執(zhí)行?
    ??????????????? D. 行級觸發(fā)器對表的每一行都會執(zhí)行一次?
    4. 有關(guān)行級觸發(fā)器的偽記錄,下列說法正確的是:?
    ?? A.? INSERT事件觸發(fā)器中,可以使用:old偽記錄。?
    ?? B.? DELETE事件觸發(fā)器中,可以使用:new偽記錄。?
    ?? C.? UPDATA事件觸發(fā)器中,只能使用:new偽記錄。?
    ??????????????? D.? UPDATA事件觸發(fā)器中,可以使用:old偽記錄。?
    5. 下列有關(guān)替代觸發(fā)器的描述,正確的是:?
    ??? A. 替代觸發(fā)器創(chuàng)建在表上?
    ??????????????? B. 替代觸發(fā)器創(chuàng)建在數(shù)據(jù)庫上?
    ??????????????? C. 通過替代觸發(fā)器可以向基表插入數(shù)據(jù)?
    ??????????????? D. 通過替代觸發(fā)器可以向視圖插入數(shù)據(jù)?

    總結(jié)

    以上是生活随笔為你收集整理的oracle 触发器的种类和触发事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    婷婷视频导航 | 一区二区三区电影大全 | 国产精品一区久久久久 | av三级av| 在线亚洲小视频 | 成人性生爱a∨ | 丝袜美腿亚洲 | 人人爽人人爽人人爽人人爽 | 国产一级电影 | 国产成人在线免费观看 | 免费观看国产精品视频 | 国语精品久久 | 欧美日本一区 | 亚洲黄色av一区 | 天天色综合三 | 精品国模一区二区 | 国产亚洲精品久久久网站好莱 | 色综合网 | 成人片在线播放 | 国语久久 | 免费视频区| 人人干人人草 | 日韩综合在线观看 | 久久久99国产精品免费 | 色视频网站在线观看一=区 a视频免费在线观看 | 狠狠躁夜夜躁人人爽视频 | 狠狠色丁香婷婷综合久小说久 | 91人人视频在线观看 | 在线观看中文字幕网站 | 成人一级电影在线观看 | 精品国产精品国产偷麻豆 | 国产福利午夜 | 国产精品久久嫩一区二区免费 | 91传媒在线 | 韩国av一区二区三区 | 成人小电影在线看 | 91污在线| 日韩在线视频线视频免费网站 | 麻豆影视在线播放 | 久久精品这里精品 | 久久精品国产免费观看 | 日本中出在线观看 | 黄色小说在线观看视频 | 麻豆国产露脸在线观看 | 3d黄动漫免费看 | 激情婷婷av| 国产网站在线免费观看 | 美女视频永久黄网站免费观看国产 | 天天av在线播放 | 免费美女久久99 | 国产精在线 | 国产尤物一区二区三区 | av在线看片 | 日韩欧美一区二区三区视频 | 成人国产精品一区 | 超碰在线公开免费 | 婷婷狠狠操| 日韩av成人在线 | 9992tv成人免费看片 | 亚洲激情久久 | 国产精品不卡在线播放 | 亚洲狠狠婷婷综合久久久 | 久久久久久久电影 | 激情av综合| 四虎永久网站 | 国产成人三级三级三级97 | 一区二区不卡 | 91丨精品丨蝌蚪丨白丝jk | 精品美女国产在线 | 在线日韩精品视频 | 国产精品入口麻豆 | 婷婷色网| 国产精品乱码久久 | 精品美女久久久久久免费 | 婷婷日 | 午夜久操 | 精品在线视频播放 | 国产一区二区三区高清播放 | 青青色影院 | 亚洲午夜久久久久久久久电影网 | 午夜av免费在线观看 | 91av在线免费 | 在线观看免费国产小视频 | 美女国内精品自产拍在线播放 | 伊人成人激情 | 99精品视频播放 | 久久精品国产美女 | 国产成人精品久久久久 | 国产999视频在线观看 | 亚洲国产久| 香蕉视频91 | 99久久精品免费看国产麻豆 | 香蕉视频在线网站 | 一区二区三区视频网站 | 中文在线a√在线 | 欧美三级在线播放 | 深爱婷婷久久综合 | 成人a毛片| 不卡的av中文字幕 | 亚洲日本黄色 | 久久都是精品 | 在线视频麻豆 | av在线8 | 亚洲综合激情五月 | 精品少妇一区二区三区在线 | 亚洲综合色激情五月 | 色噜噜噜 | 天天操天天干天天玩 | 国产99在线 | 日韩一级理论片 | 色小说在线 | 五月婷婷香蕉 | 中日韩在线视频 | 日日干日日 | 亚洲精品视频二区 | 国产一级一片免费播放放 | 黄色精品在线看 | 福利视频入口 | 国产黄色资源 | 久久激情电影 | 麻豆传媒电影在线观看 | 99re8这里有精品热视频免费 | 久久视频精品在线 | 网站免费黄色 | 少妇bbbb | 国产一区福利在线 | 少妇性bbb搡bbb爽爽爽欧美 | 精品福利国产 | 精品国产一区二区三区久久影院 | 中文字幕国语官网在线视频 | 国产精品白浆视频 | 国产精品国产三级国产不产一地 | 嫩草91影院 | 国产精品一区在线播放 | 欧美色图一区 | 中文理论片 | 高清不卡一区二区三区 | 亚洲国产网站 | 国色天香在线 | 天天操综合网站 | 天天爱天天操天天爽 | 精品久久网 | www.综合网.com | 四虎欧美 | 97爱爱爱| 欧美日韩国产一区二区三区在线观看 | 天堂va在线高清一区 | av色综合| 午夜精品久久久久久久99 | 欧美人zozo| 国产精品一区二区三区免费视频 | 久久久久免费精品视频 | 日韩精品国产一区 | 久久手机精品视频 | 色婷婷激情综合 | 91精品国自产在线观看 | 人人草在线视频 | 亚洲免费在线观看视频 | 欧美日韩亚洲一 | 欧美少妇xx | 免费观看av| www在线免费观看 | 久久精品免费播放 | 永久精品视频 | 狠狠色狠狠色综合日日92 | 中文字幕高清视频 | 成人av免费在线观看 | 日韩在线视频网 | 国产理论一区二区三区 | 国产精品乱码久久 | 91香蕉视频色版 | 国产精品 日韩 | 久久这里只有精品1 | 黄色成人av | 国产成人av综合色 | 久久99久久99免费视频 | 成年免费在线视频 | 99久久成人 | 亚洲久在线 | 欧美精品久久久久性色 | 国产剧情在线一区 | www.夜夜操.com | 五月天激情婷婷 | 美女网站黄在线观看 | 久久伊人热 | 99热精品免费观看 | 六月丁香色婷婷 | 日日操天天操夜夜操 | 中文字幕在线国产精品 | 91中文字幕一区 | 99热这里只有精品国产首页 | 激情图片qvod | 97精品超碰一区二区三区 | 福利网在线 | 97视频在线免费播放 | 日韩在线观看网址 | 国产中文字幕一区二区 | 免费在线国产精品 | 在线视频成人 | 久久久一本精品99久久精品66 | 亚洲人成免费 | 欧美精品久久久久久久久久丰满 | 免费成人结看片 | 免费观看一级 | 国产精品成人久久久久久久 | 国产精品欧美一区二区 | 国产一线天在线观看 | 五月天婷婷在线视频 | 国产色网站 | www.亚洲黄| 久久电影网站中文字幕 | 国产亚洲精品电影 | 精品国产免费人成在线观看 | 婷婷久久亚洲 | 五月激情在线 | 天天插天天狠 | 久久最新网址 | 人人澡人摸人人添学生av | 天天天干天天射天天天操 | 亚洲成人av一区 | 天天操福利视频 | 手机在线永久免费观看av片 | 91精品国| 国产精品久久久久免费a∨ 欧美一级性生活片 | 久久久久综合精品福利啪啪 | 在线成人免费 | 在线观看岛国片 | 在线观看一区 | 96精品视频 | 中文字幕韩在线第一页 | 中文字幕在线资源 | 久久艹在线观看 | 五月婷婷综合久久 | 国产手机av | 在线不卡中文字幕播放 | 在线观看国产亚洲 | 一区二区三区在线免费观看视频 | 国产v欧美 | 亚洲视频 视频在线 | 欧美日韩三级在线观看 | 麻豆手机在线 | 91av片| 亚洲精品动漫成人3d无尽在线 | 国产在线第三页 | 91丨九色丨蝌蚪丨老版 | 天天操天天草 | 日韩国产精品一区 | 国产精品1区2区3区在线观看 | 亚洲午夜精品久久久久久久久 | 欧美aa一级 | 久久久久久美女 | 日日夜夜国产 | 丁香婷婷综合五月 | 成人免费一级 | 在线亚洲天堂网 | 一区二区三区韩国免费中文网站 | 亚洲另类在线视频 | 国产资源在线免费观看 | 色婷婷啪啪免费在线电影观看 | 色视频在线观看免费 | 超碰在线天天 | 懂色av一区二区三区蜜臀 | 黄色毛片视频免费观看中文 | 最近久乱中文字幕 | 五月婷婷综合在线视频 | 亚洲精品在线一区二区三区 | 日本久久中文 | 天天操天天干天天玩 | www亚洲视频 | 色丁香久久 | 四虎在线观看精品视频 | 日韩色av色资源 | www99精品| 国产一级片免费视频 | 国产精品一区二区在线 | 91黄色免费看 | 色丁香婷婷 | 午夜美女福利直播 | 中文在线免费视频 | 日本精品免费看 | 黄色视屏av| 国产96精品 | 四虎成人免费观看 | av在线免费观看网站 | 日韩av免费观看网站 | 丁香激情综合国产 | 精品免费观看视频 | 日韩xxx视频| 香蕉视频日本 | 91最新地址永久入口 | 日韩在线视 | 亚洲欧洲精品在线 | 91人网站 | 亚洲精品国产拍在线 | 久久久久久久免费 | av千婊在线免费观看 | 999久久久久久 | 日本精品视频一区 | 国产成人黄色网址 | 精品日韩视频 | 美女免费网视频 | 午夜精品一二区 | 国产精品白虎 | 五月婷婷丁香激情 | 伊人伊成久久人综合网小说 | 免费成人av网站 | 亚洲九九九在线观看 | 精品国产伦一区二区三区观看说明 | 草久在线观看视频 | 91在线你懂的 | 亚洲国产97在线精品一区 | 亚洲a资源 | 91在线麻豆| 亚洲一区二区三区毛片 | 久久不卡视频 | 亚洲精品视频网站在线观看 | 久久精品国产99 | 久久久久久久久毛片 | 激情网第四色 | 国产日韩三级 | 亚洲精品欧美精品 | 激情欧美一区二区三区免费看 | 人人插人人艹 | 欧美日韩国产色综合一二三四 | 中文字幕一区二区三区在线视频 | 精品久久久免费视频 | 日韩精品一二三 | 免费三及片 | 婷婷深爱五月 | 97超碰中文字幕 | 久久亚洲区 | 久久久精品网站 | 日韩在线免费电影 | 国内精品久久久久久久久久 | 国产日韩欧美在线观看视频 | 黄在线免费观看 | 超碰av在线免费观看 | 在线日韩视频 | 国产精品理论片在线播放 | 日韩视频免费观看高清完整版在线 | 亚洲国产精品传媒在线观看 | 黄色亚洲在线 | 成人国产精品电影 | 黄色免费大全 | 欧美一级小视频 | 最新中文字幕视频 | 天天色天天干天天 | 美女网站久久 | 色综合天天视频在线观看 | 亚洲精选在线 | 美女久久精品 | 国产精品久久久久国产精品日日 | 中文资源在线观看 | 国产午夜三级一区二区三桃花影视 | 日韩免费在线视频观看 | 久久久视屏 | 久草在线资源观看 | 人成电影网| 日韩女同av | 欧美色精品天天在线观看视频 | 亚洲二级片| a黄色片在线观看 | 亚洲精品美女在线观看播放 | 久久成年人 | 亚洲天堂网视频在线观看 | 一区在线观看 | 色是在线视频 | 91 在线视频 | 视频二区在线视频 | 香蕉视频网站在线观看 | 亚洲精品三级 | 天堂av网站 | 免费热情视频 | 亚洲天堂精品视频在线观看 | 999毛片| 国产一级在线视频 | 欧美激情综合五月色丁香小说 | 国产免费高清视频 | 国产高清不卡 | 激情www| www91在线观看 | 国产aaa毛片 | 中日韩免费视频 | 亚洲天天在线 | 久久综合综合久久综合 | 美女免费视频一区 | 天天干,天天操 | 91成版人在线观看入口 | 美女免费电影 | 亚洲精品视频久久 | 9999国产精品 | 国产又粗又猛又爽又黄的视频免费 | www.夜夜骑.com | 在线观看成人av | 久草爱| 久久久视频在线 | 成人av电影网址 | 国产第一页在线观看 | 久久99国产精品视频 | 在线观看免费国产小视频 | 玖玖在线免费视频 | 久久国产精品一区二区三区四区 | 精品久久免费 | 国产中文字幕在线播放 | 婷婷久久网 | 日韩视频一区二区三区在线播放免费观看 | 91精品久久久久久久久 | 国产高清在线观看 | 欧美精品久久久久久久亚洲调教 | 精品国产一区二区三区四区在线观看 | 99精品久久只有精品 | 探花视频免费观看高清视频 | 国产精品videoxxxx | 一区二区三区影院 | 国产小视频福利在线 | 人人插人人 | 偷拍福利视频一区二区三区 | 狠狠操综合网 | 国产精品mv| 黄色大全免费观看 | 国产亚洲精品女人久久久久久 | 东方av在线免费观看 | 久久久精品成人 | 97视频网站 | 国产一区在线观看免费 | 人人讲| 91精品一区二区三区蜜臀 | 久久99精品久久久久蜜臀 | 狠狠色丁香久久婷婷综合五月 | 国产精品女同一区二区三区久久夜 | 国产亚洲人成网站在线观看 | 午夜电影一区 | 中文在线免费一区三区 | 日韩精品一区不卡 | 91色在线观看视频 | 久久人视频| www.五月婷婷.com | 欧美精选一区二区三区 | 播五月综合 | 91传媒免费在线观看 | 色视频在线免费观看 | 色婷婷88av视频一二三区 | 日韩二三区 | 亚洲黄色片在线 | 1024久久 | 欧美午夜精品久久久久久孕妇 | 韩国精品福利一区二区三区 | 99久久国产免费看 | 国产99久久 | 九七视频在线 | 免费看片网址 | 午夜精品导航 | 成人免费在线观看av | 人人干,人人爽 | 久久免费99精品久久久久久 | 中文字幕在线观看2018 | 久久99亚洲精品久久久久 | 伊人五月天综合 | 精品女同一区二区三区在线观看 | 91在线永久 | 一区二区视频网站 | 精品国产午夜 | 手机av电影在线 | 国产高清区 | www.五月天| 久久99婷婷| 久草影视在线 | www日| 日韩免费网址 | 色综合亚洲精品激情狠狠 | 精品日韩在线一区 | 国产婷婷精品 | 99在线观看视频网站 | 夜又临在线观看 | 欧美日韩久久不卡 | 99久久婷婷国产一区二区三区 | 日本精品一二区 | 中文字幕在线国产 | 最新午夜电影 | 日韩三级在线观看 | 久久免费视频国产 | 黄色福利网站 | 国产精品久久一卡二卡 | 亚洲国产电影在线观看 | 午夜久久福利视频 | 88av视频| 在线免费观看国产视频 | 亚洲欧美国产日韩在线观看 | 中文字幕之中文字幕 | 国产又粗又猛又黄又爽的视频 | 久久一久久 | 久久草在线免费 | 成片免费观看视频大全 | av在线最新 | www激情com | 狠狠狠色丁香综合久久天下网 | 欧美最爽乱淫视频播放 | 91免费黄视频 | 九色91av | 色九九在线 | 日韩电影中文字幕在线观看 | 久久久久一区二区三区 | 免费观看久久 | 午夜av剧场 | 免费三级a| 在线国产一区二区三区 | 在线激情小视频 | 制服丝袜一区二区 | 丁香六月久久综合狠狠色 | 国产 在线 日韩 | 国产成人a v电影 | 国产精品av久久久久久无 | 成年人免费电影在线观看 | 五月婷婷.com | 欧美特一级片 | 色婷婷综合激情 | 99久久久国产精品美女 | 国产精品99免费看 | 麻豆传媒视频在线 | 91精品在线免费视频 | 日韩在线观看电影 | 天天操天天摸天天爽 | 人人爽久久久噜噜噜电影 | 337p西西人体大胆瓣开下部 | 国产婷婷一区二区 | 天天拍天天爽 | 91香蕉视频好色先生 | 人人爽人人爽av | 久久97久久97精品免视看 | 综合亚洲视频 | 久久av不卡 | 91精品爽啪蜜夜国产在线播放 | 日韩免费中文字幕 | 日韩三级视频在线观看 | 黄色www | 日韩免费av在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 欧日韩在线视频 | 久久久久久久久久久综合 | 婷婷色中文 | 中文字幕在线一区二区三区 | 久久国内免费视频 | 1区2区视频 | 人人玩人人添人人 | 精品国产午夜 | 麻豆视频在线播放 | 91视频一8mav | 在线观看中文字幕第一页 | 亚洲无在线 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲日本国产 | 91最新网址| 在线观看日韩中文字幕 | 久久999久久| 狠狠干在线 | 在线观看成人小视频 | 国产精品乱码久久久久 | 亚洲国产中文字幕在线观看 | 91日韩在线 | 国产精品video爽爽爽爽 | 亚洲欧美日韩精品久久久 | 99精品视频播放 | 久久综合丁香 | 婷婷精品视频 | 视频一区在线播放 | 日本不卡一区二区三区在线观看 | 黄色成年网站 | 国色天香av | 2019av在线视频| 综合av在线 | av成人免费观看 | 国内精品久久影院 | 亚洲高清精品在线 | 久久最新 | 97超碰超碰久久福利超碰 | 中文字幕观看视频 | 午夜精品一区二区三区在线 | 国产视频一区在线免费观看 | 婷婷久久一区二区三区 | 91久久精品日日躁夜夜躁国产 | 夜夜高潮夜夜爽国产伦精品 | 成人av电影免费在线观看 | se婷婷 | 99在线观看| 色在线观看网站 | www.久久免费 | 99re视频在线观看 | 中文字幕不卡在线88 | 色婷五月| 欧美久久成人 | 视频91| 免费亚洲片 | 久久影视一区 | 日韩 精品 一区 国产 麻豆 | 免费观看一级成人毛片 | 亚洲自拍偷拍色图 | 亚洲高清资源 | 四虎成人精品永久免费av | 丁香花在线观看视频在线 | 久久久一本精品99久久精品 | 亚洲精品xxx| 国产打女人屁股调教97 | 最新av在线播放 | 日韩免费一级a毛片在线播放一级 | 天天操天天综合网 | 噜噜色官网 | 久久久久久久久久久成人 | 国产九色在线播放九色 | 国产精品久久久久久久久久久久久 | 人人草在线观看 | 91精品国产欧美一区二区 | 欧美在线视频第一页 | 欧洲精品视频一区二区 | 日日爱999| 97精品欧美91久久久久久 | 国产精品一区在线观看你懂的 | 久久在线免费视频 | 国产最顶级的黄色片在线免费观看 | 亚洲国产精品久久 | 中文字幕在线影院 | h动漫中文字幕 | 日韩黄色在线观看 | 香蕉视频在线网站 | 久久影视中文字幕 | 亚洲激情 欧美激情 | 日韩精品一区二区三区免费视频观看 | 99中文视频在线 | 欧美久久久一区二区三区 | 国产69精品久久久久久 | 玖玖在线观看视频 | 91麻豆精品国产自产在线游戏 | 欧美巨大荫蒂茸毛毛人妖 | 97精品免费视频 | 日韩av免费在线电影 | 中国一级片免费看 | 在线电影 你懂得 | 欧洲精品久久久久毛片完整版 | 天天草视频 | 四虎成人在线 | 国产午夜精品一区二区三区在线观看 | 亚洲午夜精品久久久久久久久 | 四虎影视成人永久免费观看视频 | 成人免费在线电影 | 天堂va在线高清一区 | 国产男女无遮挡猛进猛出在线观看 | 久久久精品免费看 | 在线观看视频色 | 欧美日韩国内在线 | 久久国产精彩视频 | 久人人 | 国产高清av免费在线观看 | 日韩成人在线一区二区 | 五月婷婷综合在线视频 | 免费在线国产黄色 | 性色av免费在线观看 | 日韩午夜电影院 | 97视频中文字幕 | 国产成人在线免费观看 | 精品视频免费在线 | 伊人婷婷激情 | 毛片一区二区 | 极品美女被弄高潮视频网站 | 久9在线| 91经典在线 | 色综合五月 | 色视频成人在线观看免 | 色无五月 | 免费久久99精品国产 | 最新日韩中文字幕 | 久久成人午夜视频 | 一区二区三区福利 | 久久av中文字幕片 | 国产日韩中文字幕 | 日本最新一区二区三区 | 中文字幕视频观看 | 国产无遮挡猛进猛出免费软件 | 天天艹天天干天天 | 91在线日本| 国产在线观看免 | 久久精彩视频 | 国产精品自产拍在线观看桃花 | 狠狠躁夜夜av | 91九色国产 | 在线免费视频一区 | 午夜精品久久久久久久99热影院 | 色综合久久88色综合天天人守婷 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产一级免费观看 | 国产精品一二 | 日本最新中文字幕 | 成人av免费在线看 | 91一区二区三区在线观看 | 黄色片网站av | 国产中文字幕亚洲 | 丁香五月网久久综合 | 国产精品久久久久9999吃药 | 国产精品成人一区二区三区吃奶 | 日韩一区二区三区免费视频 | 欧美日韩大片在线观看 | 香蕉视频在线观看免费 | 在线看日韩 | 久久超碰网 | 人人舔人人干 | 狠狠干天天操 | 天天综合成人 | 97在线观看| 日韩中文字幕a | 久久一区二区三区超碰国产精品 | 日本中文字幕在线观看 | 久久不卡国产精品一区二区 | 91爱爱电影| 国产一区二区在线播放视频 | 国产高清日韩欧美 | 亚洲男男gⅴgay双龙 | 国色天香永久免费 | 狠狠色香婷婷久久亚洲精品 | 精品国产乱码一区二区三区在线 | 成人羞羞免费 | av网站免费在线 | 这里只有精品视频在线观看 | 九九九热视频 | 国产成人黄色网址 | 91夫妻自拍| 天天插天天射 | 2020天天干夜夜爽 | 欧美最猛性xxxxx免费 | 久久久精品免费观看 | 久久久精品99 | 91精品日韩| 亚洲美女免费视频 | 婷婷六月综合亚洲 | 69国产精品视频免费观看 | 国产精品久久久久久久久久不蜜月 | 国产高清av免费在线观看 | 久久黄色网址 | 欧美日韩不卡一区二区三区 | 一区二区三区播放 | 久草免费手机视频 | av先锋影音少妇 | 久久av伊人 | 91av看片| 91香蕉视频色版 | 欧美激情片在线观看 | 免费视频黄| 国产精品久久久久四虎 | 91av电影在线观看 | 美女黄频视频大全 | 成年人在线| 激情久久久久久久久久久久久久久久 | 91理论片午午伦夜理片久久 | 在线观看韩国av | 五月婷在线观看 | 二区三区在线 | 亚洲精品乱码久久久久久蜜桃不爽 | 精品亚洲免费视频 | 亚洲日本精品 | 在线播放 亚洲 | 午夜精选视频 | 又黄又刺激又爽的视频 | 久久久999免费视频 日韩网站在线 | 久久午夜剧场 | 免费www视频 | 日韩一区二区三免费高清在线观看 | 四虎国产免费 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产在线观看一 | 久草视频在线资源 | 人人草网站 | 99精品久久久久久久久久综合 | 国产在线观看高清视频 | 国产精品美女久久久久久免费 | 国产成人精品一区一区一区 | 亚洲资源一区 | 国产黄色片免费在线观看 | 国产精品久久久久久久久久久久午 | 五月婷婷综合久久 | 全久久久久久久久久久电影 | 国产一区久久久 | 国产欧美精品一区二区三区四区 | 99视频精品免费观看, | 91av在线视频播放 | 中文字幕第一页在线 | 欧美三级在线播放 | 国产 一区二区三区 在线 | 久久女同性恋中文字幕 | 激情五月婷婷综合网 | 精品伦理一区二区三区 | 婷婷色社区| 亚洲另类交| 免费视频你懂得 | 天天干天天看 | 亚洲精品日韩在线观看 | 99精品视频在线免费观看 | 色午夜 | 麻豆免费精品视频 | 精品久久九九 | 久久免费黄色大片 | 在线播放精品一区二区三区 | 国产福利精品一区二区 | 国产一区二区三区免费在线 | 性日韩欧美在线视频 | 91精品对白一区国产伦 | 久久好看免费视频 | 在线免费日韩 | 中文av网 | 国产亚洲va综合人人澡精品 | 欧美精品在线观看 | 999久久久国产精品 高清av免费观看 | 亚洲aⅴ免费在线观看 | 久久精品国产精品亚洲 | 丁香视频在线观看 | 五月婷婷综合激情 | 一区二区观看 | 免费福利视频导航 | 欧美日韩视频观看 | 婷婷六月天丁香 | 九九热在线精品视频 | 国产精品二区在线观看 | 91大神在线看 | 国产精品一区二区久久精品 | 一区 二区电影免费在线观看 | 五月宗合网 | 午夜国产一区二区 | 久久狠狠一本精品综合网 | 日日日日 | 91av手机在线观看 | 麻豆传媒视频观看 | 一区二区三区精品久久久 | 国产永久网站 | 日日天天狠狠 | 999一区二区三区 | 久久久久成人免费 | 99精品国产视频 | 国产精品嫩草在线 | 国产精品毛片一区视频播 | 日本丶国产丶欧美色综合 | 久久国产精品免费看 | 日韩精品极品视频 | 欧美福利久久 | 欧美在线18| 欧美日韩1区 | 极品久久久久久久 | 婷婷丁香视频 | 六月天综合网 | 国产精品一区二区62 | 成人观看视频 | 欧美激情第十页 | 深夜免费福利视频 | 涩涩爱夜夜爱 | 国产在线精品国自产拍影院 | 中文字幕乱码亚洲精品一区 | 亚洲首页| 久草爱 | 精品免费视频. | 在线a人v观看视频 | 黄色www| 嫩模bbw搡bbbb搡bbbb | 欧美精品九九99久久 | 中文资源在线播放 | 精品一区二区久久久久久久网站 | 亚洲日本一区二区在线 | 2018亚洲男人天堂 | 亚洲国产日韩精品 | 久久久免费观看视频 | 欧美久久99 | 日日夜夜天天综合 | 国产精品6999成人免费视频 | 91精品中文字幕 | 激情五月综合网 | 久久夜夜爽 | 免费a级大片 | 玖玖色在线观看 | 久久久久久久久国产 | 午夜视频免费播放 | 国产精品久久久久久一区二区 | 91麻豆文化传媒在线观看 | 色综合久久99 | 欧美va天堂va视频va在线 | 国产网站av | 香蕉色综合| 81国产精品久久久久久久久久 | 一区国产精品 | 91字幕| 黄色小说视频在线 | 亚洲码国产日韩欧美高潮在线播放 | 黄色一级免费电影 | 中文在线√天堂 | 精品伦理一区二区三区 | 免费av观看网站 | av高清一区二区三区 | 97人人网| 国产一级大片在线观看 | www.五月天| 99精品国产99久久久久久97 | 99在线热播精品免费 | 亚洲黄色激情小说 | 中文字幕亚洲国产 | 日韩极品视频在线观看 | 久草免费在线视频观看 | 亚洲va韩国va欧美va精四季 | 免费午夜视频在线观看 | 欧美日韩一区二区三区在线免费观看 | 欧美一二区视频 | 国产精品一区在线播放 | 男女激情麻豆 | 久久精品中文字幕 | 在线免费观看视频一区二区三区 | 精品久久久久久久久久久久久 | 欧美一级黄大片 | 国产精品乱码久久久久久1区2区 | 成人a级网站 | 人人干人人添 | 久草视频精品 | 久久久久综合精品福利啪啪 | 亚洲欧洲精品久久 | 国产日产精品久久久久快鸭 | 欧美性天天 | 日韩精品久久久久久久电影竹菊 | 久久五月精品 | www.888.av| 玖玖在线视频观看 | 日本在线观看中文字幕无线观看 | 久久国内精品99久久6app | 六月丁香激情综合色啪小说 | 五月婷香 | 国产精久久久久久久 | www.成人sex | 亚洲欧美视频一区二区三区 | 婷婷综合在线 | 九九免费在线观看视频 | 欧美一级黄大片 | 毛片一级免费一级 | va视频在线观看 | 正在播放 国产精品 | www好男人 | 成人精品一区二区三区中文字幕 | 中文欧美字幕免费 | 亚洲一区二区视频在线播放 | 欧美一级小视频 | 免费视频xnxx com | av大全在线看 | 93久久精品日日躁夜夜躁欧美 | 天天躁天天躁天天躁婷 | 日韩中文在线字幕 | www91在线| 亚洲日本欧美在线 | 97精品国产| 国产精品毛片一区二区在线 | 国产一级在线视频 | 国产在线观看免费 | 17婷婷久久www | 国产91电影在线观看 | 国产精品12345 | 久久精品爱爱视频 | 国产日产av | 在线观看一区 | 国产美女在线精品免费观看 | 欧美另类色图 | 69国产盗摄一区二区三区五区 | 在线观看免费高清视频大全追剧 | av看片网 | 亚洲一区二区高潮无套美女 | 97超碰中文| 欧美日产在线观看 | 视频在线观看日韩 | 一级黄色免费 | 一区三区视频 | 久久激情婷婷 | 久久视频这里有久久精品视频11 | 国产96在线观看 | 九九热精品视频在线播放 | 久久成人精品电影 | 69国产盗摄一区二区三区五区 | 91久久精品日日躁夜夜躁国产 | 久草免费新视频 | 这里只有精彩视频 | 激情五月婷婷丁香 | 久久久久久久久久久久久久免费看 | 国产精品理论片在线播放 | a色视频 | 亚洲精品动漫在线 | 天天操天天舔天天干 | 日韩中文字幕网站 | 日韩字幕在线 | 婷婷在线免费视频 | 色综合久久综合中文综合网 | 久久久久久久久久免费 | 久久免费视频在线观看6 | 日韩欧美国产精品 | 五月天狠狠操 | 久久呀 | 国产精品免费视频久久久 | 亚洲欧美日韩在线看 | 久久99国产一区二区三区 | 天天射网站 | 亚洲天堂色婷婷 | 一本一道久久a久久精品蜜桃 | 中文字幕亚洲综合久久五月天色无吗'' |