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

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

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

    隨筆 - 79  文章 - 11  trackbacks - 0
    <2009年5月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    不再墮落。
    Oracle documents: 
    http://tahiti.oracle.com/

    常用鏈接

    留言簿

    隨筆分類(66)

    隨筆檔案(79)

    相冊

    收藏夾(11)

    搜索

    •  

    積分與排名

    • 積分 - 53348
    • 排名 - 949

    最新隨筆

    最新評論

    閱讀排行榜

    insert阻塞不常見,對于帶主鍵的表,如果表上有唯一約束,有兩個會話試圖插入相同主鍵值的一條記錄,則其中一個會話會發生阻塞,直到另一個會話提交或回滾。
    mld@ORCL> create table demo ( x int primary key );

    表已創建。

    mld
    @ORCL> insert into demo values ( 1 );

    已創建 
    1 行。

    ----- session2
    mld
    @ORCL> insert into demo values ( 1 );

    --waiting。。。。。。。。

    解決:
        a,使主鍵保證唯一,可采用UUID,SEQUENCE等方式;
        b,使用DBMS_LOCK.REQUEST根據主鍵ID的hash值分配一個排它鎖,一次只有一個會話能請求成功,見代碼:
      
    mld@ORCL> conn sys/mld as sysdba
    已連接。
    sys
    @ORCL> grant execute on dbms_lock to mld;

    授權成功。
    mld
    @ORCL> create or replace trigger demo_bifer
      
    2  before insert on demo
      
    3  for each row
      
    4  declare
      
    5      l_lock_id   number;
      
    6      resource_busy   exception;
      
    7      pragma exception_init( resource_busy, -54 );
      
    8  begin
      
    9      l_lock_id :=
     
    10         dbms_utility.get_hash_value( to_char( :new.x ), 01024 );
     
    11      if ( dbms_lock.request
     
    12               (  id                => l_lock_id,
     
    13                  lockmode          => dbms_lock.x_mode,
     
    14                  timeout           => 0,
     
    15                  release_on_commit => TRUE ) <> 0 )
     
    16      then
     
    17          raise resource_busy;
     
    18      end if;
     
    19  end;
     
    20  /

    觸發器已創建

    mld
    @ORCL> show error;
    沒有錯誤。
    mld
    @ORCL> insert into demo values ( 1 );

    已創建 
    1 行。

    --session 
    2
    mld
    @ORCL> insert into demo values ( 1 );
    insert into demo values ( 1 )
    *
    第 
    1 行出現錯誤:
    ORA
    -00054: 資源正忙, 但指定以 NOWAIT 方式獲取資源
    ORA
    -06512: 在 "MLD.DEMO_BIFER", line 14
    ORA
    -04088: 觸發器 'MLD.DEMO_BIFER' 執行過程中出錯


    mld
    @ORCL>

    posted on 2009-05-06 22:45 donnie 閱讀(616) 評論(0)  編輯  收藏 所屬分類: database
    主站蜘蛛池模板: 韩国免费三片在线视频| 91视频国产免费| 亚洲中文字幕无码一区二区三区| 国产精品亚洲综合五月天| 国产精品久久久久久久久免费| 午夜影视日本亚洲欧洲精品一区 | 国产精品色午夜免费视频| 亚洲综合成人婷婷五月网址| 夫妻免费无码V看片| 亚洲中文字幕无码mv| 蜜臀91精品国产免费观看| 亚洲乱色熟女一区二区三区蜜臀| 大学生高清一级毛片免费| 在线观看亚洲专区| 亚洲av中文无码| 久草免费福利在线| 亚洲卡一卡2卡三卡4卡无卡三| 午夜精品一区二区三区免费视频| 久久精品国产亚洲夜色AV网站| 91视频免费网址| 国产.亚洲.欧洲在线| 免费无码又爽又高潮视频| 污污视频网站免费观看| 国产亚洲人成A在线V网站| 一级毛片aaaaaa免费看| 亚洲大香人伊一本线| 国产无遮挡裸体免费视频| 一区二区视频在线免费观看| 亚洲AV无码国产丝袜在线观看| 最近免费中文字幕大全免费版视频 | 亚洲综合精品一二三区在线| 免费精品国偷自产在线在线| 亚洲AV色欲色欲WWW| 亚洲精品无码久久千人斩| 无码日韩人妻av一区免费| 色屁屁www影院免费观看视频| 国产亚洲精品a在线无码| 欧洲黑大粗无码免费| 久久久精品国产亚洲成人满18免费网站| 久久亚洲成a人片| 嫩草影院免费观看|