建立Oracle唯一約束,忽略已有的重複值
建立Oracle唯一約束並忽略已有重複值
今天需要對資料庫表中的三列建立一個唯一索引,已知存在重複值,
認為可以透過加入 enable novalidate關鍵字可以實現
建立語句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
提示:ORA-02299: 無法驗證 找到重複關鍵字
解決辦法
先建立組合索引
create index idx_bws_wi_id_unit_code on bs_warehouse_store (wi_id,unit,pc_cate_code) ;
建立完成後在執行語句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
成功完成約束建立
以下對約束的四種狀態說明
enable validate :無法輸入違反約束的行,而且表中所有行都要符合約束
enable novalidate :表中可以存在不合約束的狀態,,但對新加入資料必須符合約束條件.
disable novalidate :可以輸入任何資料,表中或已存在不符合約束條件的資料.
disable validate :不能對錶進行插入/更新/刪除等操作,相當於對整個表的read only設定.
今天需要對資料庫表中的三列建立一個唯一索引,已知存在重複值,
認為可以透過加入 enable novalidate關鍵字可以實現
建立語句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
提示:ORA-02299: 無法驗證 找到重複關鍵字
解決辦法
先建立組合索引
create index idx_bws_wi_id_unit_code on bs_warehouse_store (wi_id,unit,pc_cate_code) ;
建立完成後在執行語句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
成功完成約束建立
以下對約束的四種狀態說明
enable validate :無法輸入違反約束的行,而且表中所有行都要符合約束
enable novalidate :表中可以存在不合約束的狀態,,但對新加入資料必須符合約束條件.
disable novalidate :可以輸入任何資料,表中或已存在不符合約束條件的資料.
disable validate :不能對錶進行插入/更新/刪除等操作,相當於對整個表的read only設定.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28282660/viewspace-1415318/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引
- Oracle唯一約束中NULL的處理OracleNull
- PostgreSQL唯一約束如何使用?SQL
- Sql Server 自定義約束 實現:某列 可空,但非空值唯一不重複SQLServer
- 【INDEX】Oracle中主鍵、唯一約束與唯一索引之區別IndexOracle索引
- SQL Server唯一約束的使用SQLServer
- 刪除oracle重複值Oracle
- Oracle約束Oracle
- oracle 約束Oracle
- 【CONSTRAINT】具有唯一性約束的列是否可以插入空值AI
- Oracle定義約束 外來鍵約束Oracle
- 故障案例:MySQL唯一索引有重複值,官方卻說This is not a bugMySql索引
- 唯一性約束和唯一性索引的區別索引
- 在 SQL Server 中,建立表時可以直接為欄位新增唯一約束(UNIQUE)SQLServer
- C# 泛型 引用型別約束 值型別約束C#泛型型別
- MySQL·捉蟲動態·唯一鍵約束失效MySql
- oracle中的約束Oracle
- oracle 約束詳解Oracle
- Oracle約束簡介Oracle
- oracle鍵約束控制Oracle
- MySQL唯 一鍵約束場景下卻能插入重複行?MySql
- NULL和唯一約束UNIQUE的對應關係Null
- Mysql-基本練習(06-唯一約束、外來鍵約束、新增、刪除單列)MySql
- mybatis oracle資料庫批次插入資料,忽略主鍵重複MyBatisOracle資料庫
- 【PK】Oracle 10g刪除主鍵約束後無法刪除唯一約束索引問題的模擬與分析Oracle 10g索引
- 建約束(Constraint)時隱式建立索引(Index)及先建立索引後建立約束的區別AI索引Index
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- oracle 註釋和約束Oracle
- 新增/刪除約束(Oracle)Oracle
- oracle的延遲約束Oracle
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- oracle impdp的skip_constraint_errors選項跳過唯一約束錯誤OracleAIError
- 專案管理的三重約束專案管理
- MySQL學習筆記——建立與約束MySql筆記
- MySQL 處理插入過程中的主鍵唯一鍵重複值辦法MySql
- Oracle 11g系列:約束Oracle
- 修改oracle的約束欄位Oracle
- SQL 處理重複值SQL