日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

概述

最近在歸檔某張大表時因需要重建約束,碰到了個ORA-02298類型的報錯,這個問題還算比較常見的,這里整理一下一般的處理方法。

oracle常見報錯之無法驗證 (約束) - 未找到父項關鍵字解決辦法

 


思路

產生ORA-02298錯誤一般是你要插入的表A里,有外鍵連接到另一個表B的主鍵,你在表A的外鍵列插入的值,在表B的主鍵列找不到就不能插入。

主要看兩表中的數據是否一致,從表中要關聯外鍵的字段中的數據必須包含在主表相關字段的數據內。

這里是啟用外鍵約束的時候需要去校驗兩邊數據是否一致,很明顯是不一致,所以就報了以上的錯誤。

oracle常見報錯之無法驗證 (約束) - 未找到父項關鍵字解決辦法

約束命名規范

/*啟用約束:

enable( validate) :啟用約束,創建索引,對已有及新加入的數據執行約束.

enable novalidate :啟用約束,創建索引,僅對新加入的數據強制執行約束,而不管表中的現有數據.

禁用約束:

disable( novalidate):關閉約束,刪除索引,可以對約束列的數據進行修改等操作.

disable validate :關閉約束,刪除索引,不能對表進行 插入/更新/刪除等操作.*/


處理方法

1、 先不驗證已有數據的CONSTRANT,加上參數NOVALIDATE

alter table S_SHIP_UNIT_LINE
 add constraint FK_SSUL_ORL_GID2 foreign key (OR_LINE_GID)
 references ORDER_RELEASE_LINE (ORDER_RELEASE_LINE_GID) NOVALIDATE;
oracle常見報錯之無法驗證 (約束) - 未找到父項關鍵字解決辦法

 

NOVALIDATE是對之前的數據不做校驗,后面新增的數據還是會校驗的,因為我是刪了數據后去做的,所以這個數據一致性是在允許范圍內的,就沒有做下面的動作了。

2、首先查看兩個表對應起來的數據有多少

select count(*) from S_SHIP_UNIT_LINE t,ORDER_RELEASE_LINE 
 k where t.OR_LINE_GID= k.ORDER_RELEASE_LINE_GID;

3、分別查看單獨的數據

select count(*) from S_SHIP_UNIT_LINE t;
select count(*) from ORDER_RELEASE_LINE k;

4、找到多的行并刪除

select t.OR_LINE_GID from S_SHIP_UNIT_LINE t where t.OR_LINE_GID 
not in (select k.ORDER_RELEASE_LINE_GID from ORDER_RELEASE_LINE k);

5、直接重新執行啟用外鍵的語句,或者刪除之前的外鍵創建新的外鍵

alter table S_SHIP_UNIT_LINE
 add constraint FK_SSUL_ORL_GID2 foreign key (OR_LINE_GID)
 references ORDER_RELEASE_LINE (ORDER_RELEASE_LINE_GID) 
 VALIDATE;

分享到:
標簽:oracle
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定