Oracle教程:ORA-02292和ORA-02297 |
發布時間: 2012/8/26 15:28:01 |
刪除某表的數據,報錯“ORA-02292: 違反完整約束條件 (UNITELE.TA_SUB_REFERENCE3) - 已找到子記錄”。原來該表有主鍵,隨即置主鍵約束無效 ALTER TABLE table_name MODIFY CONSTRAINT PK_SUB_TASK_T DISABLE; 又報錯“ORA-02297: 無法禁用約束條件 (UNITELE.PK_SUB_TASK_T) - 存在相關性” 說明該表的主鍵被其他表作為了外鍵,置約束無效得加上cascade ALTER TABLE table_name MODIFY CONSTRAINT PK_SUB_TASK_T DISABLE CASCADE; 或 ALTER TABLE table_name DISABLE CONSTRAINT PK_SUB_TASK_T CASCADE; 這樣就可以刪除數據了,但是務必在刪除數據后,將主鍵約束置為有效。由于前面使用的是級聯,那么也會影響到其他表將該主鍵作為外鍵的約束,給一并置為了無效,所以都得給置回來。 會影響到其他哪些約束哪些表呢? select CONSTRAINT_NAME,TABLE_NAME from dba_constraints where r_constraint_name ='PK_SUB_TASK_T'; 本文出自:億恩科技【www.laynepeng.cn】 |