oracle 約束 enable validate 檢查
Oracle約束按約束狀態又可分為disable novalidate,disable validate,enable novalidate,enable validate. 其中disable/enable代表是否啟用約束,validate/novalidate代表啟用約束時是否對錶中原有資料作檢查。
這裡模擬生產環境中的情況,先建一張沒有約束的表,等有一定資料後建立enable novalidate約束,進而執行enable validate來規範表中所有資料,具體如下:
1. 建立原始表及資料
SQL> create table t1(
2 id number,
3 name varchar2(20));
SQL> insert into t1 values(1,'A');
SQL> insert into t1 values(1,'B');
SQL> insert into t1 values(2,'C');
SQL> insert into t1 values(3,'D');
SQL> insert into t1 values(3,'E');
SQL> insert into t1 values(4,'F');
2. 在表上建立enable novalidate主鍵
SQL> alter table t1 add constraint pk_t1 primary key (id)
2 deferrable enable novalidate;
此時主鍵已經生效,但源表中包含不符合約束的資料
3. 嘗試將約束狀態更改為 enable validate,卻發現原有資料有問題
SQL> alter table t1 enable validate constraint pk_t1;
alter table t1 enable validate constraint pk_t1
*
第 1 行出現錯誤:
ORA-02437: 無法驗證 (SCOTT.PK_T1) - 違反主鍵
4. 找出違反約束的資料,刪除後生效
參考:http://sns.linuxpk.com/space.php?uid=52196&do=blog&id=16032
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15720542/viewspace-622176/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle約束enable validate時資料檢查Oracle
- oracle學習(2)-Oracle約束的關鍵字Enable/Disable/Validate/NovalidateOracle
- 主鍵約束設定Enable Novalidate時報錯
- Oracle約束Oracle
- oracle 約束Oracle
- sql: 查詢約束SQL
- Oracle定義約束 外來鍵約束Oracle
- 通過大容量匯入操作控制約束檢查
- oracle中的約束Oracle
- oracle 約束詳解Oracle
- Oracle約束簡介Oracle
- oracle鍵約束控制Oracle
- 查詢oracle表的資訊(表,欄位,約束,索引)Oracle索引
- disable/enable validate/novalidate 的區別
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- oracle 註釋和約束Oracle
- 新增/刪除約束(Oracle)Oracle
- oracle的延遲約束Oracle
- Constraint State(disable/enable validate/noalidate)AI
- Oracle 11g系列:約束Oracle
- 修改oracle的約束欄位Oracle
- oracle約束學習經典案例Oracle
- oracle 約束的novalidate 應用Oracle
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引
- 《MySQL 基礎篇》八:約束和檢視MySql
- Javaweb-約束-外來鍵約束JavaWeb
- oracle ENABLE=BROKENOracle
- 【從零開始學習Oracle資料庫】(5)約束檢視與索引Oracle資料庫索引
- oracle外來鍵約束的總結Oracle
- Oracle constraints type 約束型別OracleAI型別
- Oracle基礎 11 約束 constraintsOracleAI
- oracle主外來鍵鎖_lock_約束Oracle
- Oracle約束的學習與測試Oracle
- Oracle 9i 約束條件(轉)Oracle
- 10、Oracle中的約 束constraintOracleAI
- 淺析物化檢視與查詢重寫(Enable query rewrite)
- SQL約束SQL
- MySQL 約束MySql