ORA-02299: cannot validate (SSERVICE.UK_MSI_WDR_INPUT) - duplicate keys found
-資料庫在建立unique constraint的同時,強制建立或者重用列上的索引。如果之前列上沒有索引,那麼強制建立的索引是unique index,如果列上已經存在索引,就重用之前的索引。
為了避免出現重複資料,在現有的表上面新增unique constraint,而又不影響現有資料。
1. SQL> alter table msi_wdr_input add constraint UK_MSI_WDR_INPUT unique(msifilesiteid,postdate,linetype,value001,value002,value003,value004) enable novalidate;
alter table msi_wdr_input add constraint UK_MSI_WDR_INPUT unique(msifilesiteid,postdate,linetype,value001,value002,value003,value004) enable novalidate
ORA-02299: cannot validate (SSERVICE.UK_MSI_WDR_INPUT) - duplicate keys found
因為資料表中存在重複資料,導致了unique constraint 沒有建立成功。
2. SQL> alter table msi_wdr_input add constraint UK_MSI_WDR_INPUT unique(msifilesiteid,postdate,linetype,value001,value002,value003,value004) deferrable enable novalidate;
Table altered
加上 deferrable enable novalidate (延遲約束驗證),就可以對原資料不做驗證,在以後插入資料時,做唯一性驗證。
新增資料測試:
SQL> insert into msi_wdr_input(msifilesiteid,postdate,linetype,value001,value002,value003,value004)
2 values('AJAG',to_date('04-04-2009','DD-MM-YYYY'),1,'1103','Occ Tax - State','1278.88','0.00');
insert into msi_wdr_input(msifilesiteid,postdate,linetype,value001,value002,value003,value004)
values('AJAG',to_date('04-04-2009','DD-MM-YYYY'),1,'1103','Occ Tax - State','1278.88','0.00')
ORA-00001: unique constraint (SSERVICE.UK_MSI_WDR_INPUT) violated
違反了唯一性約束,插入失敗。
另:在oracle中,(1)null代表資料缺失,一個null不存在與任何值(包括其它null)等或者不等。所以,在給單列加Unique約束時,是允許為它存在多個null的。(2)在組合鍵中,只要不為null的keys都對應相等,那麼Oracle會把null的keys譯為相等。比方說,一個有三列組成(A,B,C)的組合唯一約束。如果C列為null,那麼兩條記錄是否違反唯一約束,就看另外兩列是否對應相等。如 (1,2,null) 和 (1,2,null)就視為違反唯一性約束
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29893219/viewspace-1851597/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys foundIndex
- Q:[Vue warn]: Duplicate keys detected: ‘PAYACT‘. This may cause an update error.VueError
- vue報錯之Duplicate keys detected: '0'. This may cause an update error.VueError
- 【ASM】Oracle RAC css啟動報錯"Duplicate voting file found"ASMOracleCSS
- 【NinGoo】lvm2與powerpath的Found duplicate PV問題GoLVM
- 【江楓】lvm2與powerpath的Found duplicate PV問題LVM
- install emc powerpath on redhat linux and 'Found duplicate PV' 問題解決RedhatLinux
- C - Keys
- [Vue warn]: Error in render: "TypeError: Cannot read property 'matched' of undefined" found in <App> at src/App.vueVueErrorUndefinedAPP
- Object.keys()Object
- react 列表&keysReact
- VALIDATE STRUCTUREStruct
- JavaScript 陣列 keys()JavaScript陣列
- Indexes and Keys (197)Index
- C++報錯:The build tools for v141 (Platform Toolset = 'v141') cannot be found.C++UIPlatform
- jQuery Validate success()jQuery
- Jquery--ValidatejQuery
- duplicate databaseDatabase
- 批量刪除 redis keysRedis
- EF Core Keys(連結)
- jQuery Validate addMethod()jQuery
- jQuery Validate errorPlacement()jQueryError
- jQuery Validate optional()方法jQuery
- jQuery Validate invalidHandler()jQuery
- 學習VALIDATE STRUCTUREStruct
- RMAN duplicate databaseDatabase
- Object.keys() 與 for in 區別Object
- Laravel redis 正則匹配keysLaravelRedis
- Keys for graphs閱讀筆記筆記
- for in,Object.keys,for of 的區別Object
- ssh keys管理工具
- Eclipse 10 hotest-keysEclipse
- Vue Element校驗validateVue
- jQuery Validate的format()用法jQueryORM
- jquery validate用法總結jQuery
- jQuery.validate 詳解jQuery
- jquery validate 詳解一jQuery
- jquery validate 詳解二jQuery