乳尖春药H糙汉共妻,国产成人无码精品亚洲,少妇肉欲系列1000篇,免费永久看黄神器

公司新聞

oracle常見報錯之無法驗證 (約束)

作者:admin 日期:2023-10-17 瀏覽:

oracle常見報錯之無法驗證 (約束)

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

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

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

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

約束命名規范

/*啟用約束:

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;

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;

覺得有用的朋友多幫忙轉發哦!后面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~

  電話咨詢

<abbr id="ehohq"><form id="ehohq"><small id="ehohq"></small></form></abbr>
  • <menu id="ehohq"><dl id="ehohq"></dl></menu>

    1. <bdo id="ehohq"><span id="ehohq"></span></bdo>
        主站蜘蛛池模板: 齐河县| 长海县| 望奎县| 定襄县| 乃东县| 临颍县| 松潘县| 崇明县| 石棉县| 达拉特旗| 临桂县| 汉寿县| 白银市| 平乐县| 南汇区| 盘锦市| 霍邱县| 开化县| 虎林市| 游戏| 寿阳县| 灵武市| 桐梓县| 舞钢市| 门头沟区| 康定县| 隆化县| 长垣县| 奎屯市| 徐汇区| 玉林市| 曲麻莱县| 横峰县| 郴州市| 东兰县| 胶南市| 谷城县| 寿宁县| 高陵县| 义乌市| 陇川县|