<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術(shù)分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

    在寫trigger的時候,經(jīng)常會遇到這種情況
    當(dāng)在程序塊中需要對trigger本表進行修改或查詢的時候,系統(tǒng)會提示錯誤:  ORA-04091: table is mutating, trigger/function may not see it

    關(guān)于這個錯誤,其實是由于對本表的操作造成的.ORACLE DB里默認(rèn)在寫TRIGGER的時候把本表鎖死,不允許對其進行操作,也就是說這個錯誤是不能通過系統(tǒng)的手段解決的,只能改用一些其它的SQL來繞開它.

    對此可通過自治事物解決:

    SQL> CREATE TABLE T(ID NUMBER(18),MC VARCHAR2(20),DT DATE);

    表已創(chuàng)建。

    SQL> CREATE OR REPLACE TRIGGER TR_T
      2  AFTER DELETE ON T
      3  FOR EACH ROW
      4  DECLARE V_COUNT NUMBER;
      5  --PRAGMA AUTONOMOUS_TRANSACTION;
      6  BEGIN
      7     INSERT INTO T VALUES(:OLD.ID,:OLD.MC,SYSDATE);
      8     COMMIT;
      9  END TR_DEL_CABLE;
    10  /

    觸發(fā)器已創(chuàng)建

    SQL> INSERT INTO T VALUES(1,'111111',SYSDATE);

    已創(chuàng)建 1 行。

    SQL> INSERT INTO T VALUES(2,'222222',SYSDATE);

    已創(chuàng)建 1 行。

    SQL> COMMIT;

    提交完成。

    SQL> SELECT ID,MC,TO_CHAR(DT,'YYYYMMDD HH24:MI:SS') FROM T;

            ID MC                   TO_CHAR(DT,'YYYYM
    ---------- -------------------- -----------------
             1 111111               20080802 11:07:36
             2 222222               20080802 11:07:43

    SQL> DELETE FROM T WHERE ID=1;
    DELETE FROM T WHERE ID=1
                *
    第 1 行出現(xiàn)錯誤:
    ORA-04091: 表 TEST.T 發(fā)生了變化, 觸發(fā)器/函數(shù)不能讀它
    ORA-06512: 在 "TEST.TR_T", line 4
    ORA-04088: 觸發(fā)器 'TEST.TR_T' 執(zhí)行過程中出錯


    SQL> SELECT ID,MC,TO_CHAR(DT,'YYYYMMDD HH24:MI:SS') FROM T;

            ID MC                   TO_CHAR(DT,'YYYYM
    ---------- -------------------- -----------------
             1 111111               20080802 11:07:36
             2 222222               20080802 11:07:43

    SQL> CREATE OR REPLACE TRIGGER TR_T
      2  AFTER DELETE ON T
      3  FOR EACH ROW
      4  DECLARE V_COUNT NUMBER;
      5  PRAGMA AUTONOMOUS_TRANSACTION;--開啟自治事物
      6  BEGIN
      7     INSERT INTO T VALUES(:OLD.ID,:OLD.MC,SYSDATE);
      8     COMMIT;--提交自治事物
      9  END TR_DEL_CABLE;
    10  /

    觸發(fā)器已創(chuàng)建

    SQL> DELETE FROM T WHERE ID=1;

    已刪除 1 行。

    SQL> COMMIT;

    提交完成。

    SQL> SELECT ID,MC,TO_CHAR(DT,'YYYYMMDD HH24:MI:SS') FROM T;

            ID MC                   TO_CHAR(DT,'YYYYM
    ---------- -------------------- -----------------
             2 222222               20080802 11:07:43
             1 111111               20080802 11:08:32

     

    posted on 2010-02-04 18:22 小菜毛毛 閱讀(6600) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
    主站蜘蛛池模板: a级毛片高清免费视频| 亚洲专区一路线二| 亚洲一级毛片免费观看| 成年性生交大片免费看| 亚洲日韩图片专区第1页| 91人成网站色www免费下载| 色窝窝免费一区二区三区| 亚洲av永久无码制服河南实里| 亚洲日韩乱码中文无码蜜桃| 无码高潮少妇毛多水多水免费| 亚洲一级视频在线观看| 亚洲精品高清在线| 亚洲乱人伦中文字幕无码| 免费一级毛片在线播放放视频| a毛片视频免费观看影院| 亚洲人成网站18禁止久久影院| 阿v免费在线观看| 亚洲综合一区二区精品导航 | 亚洲人成黄网在线观看| 免费观看国产精品| 99热这里只有精品6免费| 18亚洲男同志videos网站| 国产99视频精品免费视频7| 99视频有精品视频免费观看| 国产亚洲美女精品久久久久狼| 久草免费手机视频| 午夜色a大片在线观看免费| 国产精品亚洲成在人线| 全免费a级毛片免费看不卡| 久久99热精品免费观看牛牛| 亚洲国产国产综合一区首页| 91久久青青草原线免费| 久久精品国产亚洲AV蜜臀色欲| 午夜高清免费在线观看| 99re6免费视频| h视频免费高清在线观看| 久久精品国产亚洲av麻| 91精品免费观看| 一个人看的www免费视频在线观看| 18gay台湾男同亚洲男同| 成年人网站在线免费观看|