刪除關連表資料的時候經常會出現提示,原因很簡單:要刪除的資料已經被子表資料關聯
ora-
02292: 違反完整約束條件 (hgycd.fk_n2scj64lcddflx2e9wbj3b5vj)
這個時候如果依然要刪除主表資料的話,大致有兩種方式:
1、根據約束查詢到子表,刪除子表關聯資料,再刪除主表資料
--第一種方式, 根據 約束名 查詢到關聯資訊 其中關聯資訊中constraint_type='r'表示是外來鍵約束
select
*from user_constraints t where t.constraint_name=
'fk_n2scj64lcddflx2e9wbj3b5vj'
--第二種方式 根據表名 查詢關聯資訊
select
*from user_constraints t where t.table_name =
'hg_qsum_detail'
2、根據約束查詢到子表,禁用子表約束,直接刪除主表資料
查詢關聯資訊的方式和上面一致
--禁用約束 alter table 表名 disable constraint 約束名
alter
table hg_qsum_detail disable
constraint fk_n2scj64lcddflx2e9wbj3b5vj;
禁用約束之後,就可以可直接刪除主表資料了,需要注意的是,刪除了主表資料庫後,再啟用約束是沒有用的。
除此之外,其他情況,在禁用約束之後可使用下面語句來重新啟用約束
--刪除主表資料之後,這裡再啟用約束時會提示 『未找到父項關鍵字』, 所以刪除主表資料後,再啟用是無效的
--但不影響新資料
alter
table hg_qsum_detaildisable enable
constraint fk_n2scj64lcddflx2e9wbj3b5vj;
ORA 02292主鍵約束問題
通常在刪除某個表a的時候,會出現這個錯誤。原因是另乙個表b的某個字段引用了a表的某個字段作為約束 這個的另乙個說法是外來鍵 假如引用的字段叫field,當b.field a.field 而你想刪掉a.field,這時就爆出這個錯誤。解決辦法是先把b.field b.field a.field的部分 ...
ORA 02291 違反完整約束條件
ora 02291 違反完整約束條件 未找到父項關鍵字問題解決 總體說說可能出現的原因 情況場景 表a中有個字段是外來鍵,關聯了表b中的某欄位,再往表a插入資料時,會出現這種情況。可能原因 1.插入的資料 如果某個欄位是外來鍵 那麼該值要麼為空 要麼在主鍵表中 有對應的主鍵值 否則 就不滿足參照完整...
ORA 02292 外來鍵關聯,無法刪除記錄
經常我們在刪除db記錄時,會為外來鍵關聯而無法刪除資料感到苦惱。這裡個人經常用到的乙個方法就是,先讓關聯主鍵失效,然後再刪除資料,資料刪除完成後,再讓其主 鍵生效,這樣很好的解決了刪除級聯資料難的問題。第一步 讓主鍵失效 alter table table name disable primary ...