Oracle中錯誤代碼ORA-02292 違反了完整性約束條件解決


百度處理:

A表被B表引用,刪除A表的時候提示ORA-02292,A表的主鍵被引用了,雖然已經把B表的數據全部刪除掉,但仍然刪除不了A表的數據。
解決辦法:
 用禁用約束語句把A表的主鍵約束給禁用掉。
1、禁用約束:alter table 表名 disable constraint 主鍵   CASCADE
 2、刪除A表的數據
 3、啟用約束:alter table 表名 enable constraint 主鍵
OK,大功告成。注意,禁用的時候一定要加 CASCADE。

我的處理方法(也是參照上面的):

我的問題是,A,B是同一張表,但是刪除不了記錄。 PL/SQL執行代碼:delete from LDMenu where NodeCode='1923',就會報ORA-02292.

我在這里,表明上面問題注意點:

1.首先查看LDMenu表的主鍵是啥,在PL/SQL中右鍵表明View.選擇keys,會有一行記錄,有Name,,Type,Columns等字段。這里注意Name是約束名,Columns是表的字段名。

2.我的sql如下,基本是按照百度上面說的做的。一定要注意constraint 后面的字段是約束名,而不是表的字段名。

alter table ldmenu disable constraint PK_LDMENU CASCADE  

delete from LDMenu where NodeCode='1923'

 alter table ldmenu enable constraint PK_LDMENU

3.百度上面說的注意,的確也要注意。處理完后也要將之前的禁用啟動。刪除的時候也要提交,這是pl/sql的知識,至此問題解決完畢。

近日開發收獲:其實開發工具還是Oracle報的錯,一般都搬的很對。報你主鍵被引用就是被引用,Java報你控制針就是有空指針。先回顧昨天開發中出現的問題,我SIT更新完jsp后,一直報一個name變量無法編譯或者沒有定義之類的錯誤,我在SIT上查看,我已經都修改過了,為什么還是報錯,以為是WebSpere沒有生效(有時候的確有這個情況發生)。重啟WebSpere還是不生效,然后我就想是不是jsp到class文件沒有編譯,我又到服務器上刪除jsp編譯后的class文件。最后重啟還是報name變量未定義同樣錯誤。這個時候,我仔細檢查修改后的jsp頁面。結果是一個System.out...語句寫成name.out...。顯然這里的name變量不對,無法調方法。改后,SIT生效。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM