<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
    主站蜘蛛池模板: 国产精品亚洲专区无码牛牛| 久久水蜜桃亚洲AV无码精品 | 免费人成在线观看网站视频 | 久久免费观看国产精品88av| 国产国拍亚洲精品福利| 一级做a爰性色毛片免费| 伊人久久精品亚洲午夜| 东方aⅴ免费观看久久av | 91免费精品国自产拍在线不卡| 麻豆狠色伊人亚洲综合网站| a级毛片无码免费真人| 处破女第一次亚洲18分钟| 亚洲精品麻豆av| ASS亚洲熟妇毛茸茸PICS| 在线免费观看一级毛片| 爱情岛论坛免费视频| 无码人妻一区二区三区免费手机| 永久免费av无码网站韩国毛片| 亚洲第一se情网站| 在线观看亚洲成人| 24小时免费看片| 亚洲人成网站色7799| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 日本免费大黄在线观看| 国产精品亚洲精品观看不卡| 宅男666在线永久免费观看| 一级特黄录像免费播放中文版| 亚洲av无码成h人动漫无遮挡 | 久久久久av无码免费网| 亚洲精品国产精品| 可以免费看黄视频的网站| 亚洲精品私拍国产福利在线| 免费观看的毛片大全| 成年网站免费入口在线观看 | 两性刺激生活片免费视频| 日韩一区二区三区免费播放| 亚洲四虎永久在线播放| 日韩高清在线免费观看| 久久久精品免费国产四虎| 亚洲成aⅴ人片久青草影院按摩| 久久激情亚洲精品无码?V|