心湖里的一條小魚——我的Java家園

          沒事就說說Java;有事就通過Java編程賺點生活費。
          posts - 7, comments - 2, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          約束延期是一個對主鍵、唯一鍵等約束進行延遲檢查的功能。可以使用該功能將約束檢查延遲到事務提交時,而不是在進行DDL操作之后立即進行檢查。所以對約束檢查也有這兩個選項:延遲和立即。
          ?比如對于表t_test
          ?Name Type???????? Nullable Default Comments
          ---- ------------ -------- ------- --------
          NAME VARCHAR2(12) Y????????????????????????
          AGE? NUMBER(5)??? Y
          ????????????????????????

          通過這個語句增加一個延遲檢查的主鍵約束:
          alter table t_test add constraint pk_name primary key (name) DEFERRABLE INITIALLY DEFERRED;

          執行如下操作:
          SQL>insert into t_test values ('Tom',32);

          1 row inserted

          SQL> commit;

          Commit complete

          SQL> select * from t_test;

          NAME??????????? AGE
          ------------ ------
          Tom??????? 32

          SQL> insert into t_test values ('Tom',32);

          1 row inserted

          SQL> commit;

          commit

          ORA-02091: 事務處理已重算
          ORA-00001: 違反唯一約束條件 (SCOTT.PK_NAME)


          這個唯一約束條件的檢查時在commit時候進行檢查的,而不是在insert了違反約束條件的值之后馬上進行檢查。


          評論

          # re: Oracle學習筆記(2)—約束延遲(constraints deffered)  回復  更多評論   

          2006-07-19 13:46 by 12
          122
          主站蜘蛛池模板: 保定市| 军事| 凤山县| 阜城县| 习水县| 奉化市| 崇州市| 霍城县| 额尔古纳市| 呼伦贝尔市| 民丰县| 西乌珠穆沁旗| 田东县| 洛南县| 读书| 汉阴县| 亚东县| 渝北区| 邹城市| 盐城市| 博野县| 鸡泽县| 红桥区| 道孚县| 上饶市| 宽城| 元阳县| 虹口区| 札达县| 大洼县| 海丰县| 景泰县| 宿迁市| 罗江县| 特克斯县| 阿拉善左旗| 濮阳市| 合山市| 酒泉市| 叶城县| 吴堡县|