91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • 關于sql腳本導入Oracle時重復生成check約束的問題解決

關于sql腳本導入Oracle時重復生成check約束的問題解決

發布時間:2020-08-28 22:07:17 來源:腳本之家 閱讀:137 作者:YiYing 欄目:數據庫

前言

最近在工作中一位細心的同事發現產品的全量sql腳本中有一些重復的check約束檢查,就像下圖這樣的

關于sql腳本導入Oracle時重復生成check約束的問題解決

重復腳本

怪異之處還在于,每次執行一遍該腳本,然后導出腳本,在導出腳本中重復的次數就會增加一遍。通過navicat,最終確認每導入一次就會新增加一條重復的check約束,如下圖所示

關于sql腳本導入Oracle時重復生成check約束的問題解決

navicat

這個全量腳本是直接從數據庫中導出的,為了方便導入其他的Oracle數據庫中,從產品的出貨庫導出時手動去掉了服務名、雙引號。

通過如下步驟可復現該問題:

1.創建表

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的標識,執行完后在navicat中可以看到結果是這樣的

關于sql腳本導入Oracle時重復生成check約束的問題解決
navicat

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

2.執行增加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);

執行了兩遍后,結果如圖所示

關于sql腳本導入Oracle時重復生成check約束的問題解決
navicat

測試到這里,以為最終終于找到了原因,確認為雙引號的問題。抱著嚴謹的態度,再次確認了一下

3.執行帶雙引號的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);

結果如圖所示:

關于sql腳本導入Oracle時重復生成check約束的問題解決
navicat

靠!居然還是會重復生成!

解決方法

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘洛县| 乐昌市| 城市| 新乐市| 新巴尔虎右旗| 云阳县| 开江县| 星座| 上林县| 鹿泉市| 乌拉特前旗| 云浮市| 阿拉善右旗| 荆门市| 腾冲县| 友谊县| 微山县| 大渡口区| 水富县| 元氏县| 耒阳市| 简阳市| 泰兴市| 永平县| 独山县| 广宁县| 巨野县| 龙南县| 商都县| 余姚市| 贵南县| 石阡县| 濉溪县| 祁连县| 腾冲县| 星子县| 壶关县| 毕节市| 扎赉特旗| 射洪县| 成安县|