主頁 > 知識庫 > 關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決

關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決

熱門標(biāo)簽:理財產(chǎn)品電銷機器人 上海網(wǎng)絡(luò)外呼系統(tǒng) 外呼系統(tǒng)好點子 區(qū)域地圖標(biāo)注怎么設(shè)置 地圖標(biāo)注的坐標(biāo)點 南通電銷外呼系統(tǒng)哪家強 百度地圖標(biāo)注飯店位置怎么 電話機器人那種好 百度地圖標(biāo)注注解

前言

最近在工作中一位細(xì)心的同事發(fā)現(xiàn)產(chǎn)品的全量sql腳本中有一些重復(fù)的check約束檢查,就像下圖這樣的

重復(fù)腳本

怪異之處還在于,每次執(zhí)行一遍該腳本,然后導(dǎo)出腳本,在導(dǎo)出腳本中重復(fù)的次數(shù)就會增加一遍。通過navicat,最終確認(rèn)每導(dǎo)入一次就會新增加一條重復(fù)的check約束,如下圖所示

navicat

這個全量腳本是直接從數(shù)據(jù)庫中導(dǎo)出的,為了方便導(dǎo)入其他的Oracle數(shù)據(jù)庫中,從產(chǎn)品的出貨庫導(dǎo)出時手動去掉了服務(wù)名、雙引號。

通過如下步驟可復(fù)現(xiàn)該問題:

1.創(chuàng)建表

CREATE TABLE PD_WEB_FILEUPLOAD_CHUNK (
ID VARCHAR2(32 BYTE) NOT NULL ,
MD5 VARCHAR2(32 BYTE) DEFAULT NULL NULL ,
CHUNK NUMBER DEFAULT NULL NULL ,
FILE_DIR VARCHAR2(200 BYTE) NOT NULL
)

可以看到上面的腳本中有NOT NULL的標(biāo)識,執(zhí)行完后在navicat中可以看到結(jié)果是這樣的


navicat

注意看,這里的check約束是帶雙引號的。

2.執(zhí)行增加check約束的腳本

ALTER TABLE PD_WEB_FILEUPLOAD_CHUNK ADD CHECK (ID IS NOT NULL);
ALTER TABLE PD_WEB_FILEUPLOAD_CHUNK ADD CHECK (FILE_DIR IS NOT NULL);

執(zhí)行了兩遍后,結(jié)果如圖所示


navicat

測試到這里,以為最終終于找到了原因,確認(rèn)為雙引號的問題。抱著嚴(yán)謹(jǐn)?shù)膽B(tài)度,再次確認(rèn)了一下

3.執(zhí)行帶雙引號的check約束的腳本

ALTER TABLE PD_WEB_FILEUPLOAD_CHUNK ADD CHECK ("ID" IS NOT NULL);
ALTER TABLE PD_WEB_FILEUPLOAD_CHUNK ADD CHECK ("FILE_DIR" IS NOT NULL);

結(jié)果如圖所示:


navicat

靠!居然還是會重復(fù)生成!

解決方法

驗證到這里,算是找出了原因。

在全量導(dǎo)出的腳本中,創(chuàng)建表的腳本中已經(jīng)隱含了檢查約束,如果再顯示的添加檢查約束就會重復(fù)生成。所以,解決辦法為需要手動刪除所有顯示的檢查約束。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Oracle數(shù)據(jù)庫的字段約束創(chuàng)建和維護(hù)示例
  • 在Oracle數(shù)據(jù)庫中添加外鍵約束的方法詳解
  • oracle刪除主鍵查看主鍵約束及創(chuàng)建聯(lián)合主鍵
  • oracle 11g em重建報唯一約束錯誤解決方法
  • Oracle約束管理腳本
  • Oracle如何給數(shù)據(jù)庫添加約束過程解析

標(biāo)簽:百色 海東 紹興 自貢 中衛(wèi) 遼源 寧波 昭通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決》,本文關(guān)鍵詞  關(guān)于,sql,腳本,導(dǎo)入,Oracle,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決》相關(guān)的同類信息!
  • 本頁收集關(guān)于關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章