心湖里的一條小魚——我的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
          主站蜘蛛池模板: 青河县| 富锦市| 阿合奇县| 五华县| 洪洞县| 兴宁市| 子长县| 崇州市| 阜平县| 禹州市| 壤塘县| 中宁县| 阿城市| 肃北| 华宁县| 丹巴县| 西华县| 兴国县| 大洼县| 区。| 汕尾市| 龙南县| 台南县| 凭祥市| 长海县| 玉龙| 泗阳县| 灵石县| 井研县| 务川| 怀宁县| 万山特区| 塔河县| 崇阳县| 班玛县| 深泽县| 饶河县| 伊金霍洛旗| 渭南市| 澄江县| 旅游|