关于sql脚本导入Oracle时重复生成check约束的问题解决
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,前言最近在工作中一位细心的同事发现产品的全量sql脚本中有一些重复的check约束检查,就像下图这样的重复脚本怪异之处还在于,每次执行一遍该脚本,然后导出脚本,在导出脚本中重复的次数就会增加一遍。通过
千家信息网最后更新 2026年11月01日关于sql脚本导入Oracle时重复生成check约束的问题解决
前言
最近在工作中一位细心的同事发现产品的全量sql脚本中有一些重复的check约束检查,就像下图这样的
重复脚本
怪异之处还在于,每次执行一遍该脚本,然后导出脚本,在导出脚本中重复的次数就会增加一遍。通过navicat,最终确认每导入一次就会新增加一条重复的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中可以看到结果是这样的

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);
执行了两遍后,结果如图所示
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);结果如图所示:
navicat
靠!居然还是会重复生成!
解决方法
验证到这里,算是找出了原因。
在全量导出的脚本中,创建表的脚本中已经隐含了检查约束,如果再显示的添加检查约束就会重复生成。所以,解决办法为需要手动删除所有显示的检查约束。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
脚本
引号
检查
结果
问题
生成
产品
内容
原因
手动
数据
数据库
加一
如图
工作
严谨
细心
怪异
下图
再次
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技名片
易互联网科技有限公司
互联网金融公司科技
互联网科技小贷
互联网 科技创业
亿账通互联网科技
时间互联网络科技
友谊互联网络科技
互联网科技logo
融贸通互联网科技
撒么互联网科技公司
丰台科技园 互联网公司
华脉科技工业互联网产品
广西拼得多互联网科技有限公司
互联网科技产品
创业天下互联网科技有限公司
港股科技和互联网
世界互联网科技公司市值排名
燊美集互联网科技有限公司
福建互联网展示科技馆设计
互联网科技工作委员会
互联网科技深圳
互联网科技社
金融科技 互联网金融
万易互联网科技
互联网科技小额贷款
哈尔滨秒房互联网科技有限公司
互联网还是高科技吗
黑龙江互联网科技公司
互联网科技创业有什么好项目