关于sql脚本导入Oracle时重复生成check约束的问题解决
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,前言最近在工作中一位细心的同事发现产品的全量sql脚本中有一些重复的check约束检查,就像下图这样的重复脚本怪异之处还在于,每次执行一遍该脚本,然后导出脚本,在导出脚本中重复的次数就会增加一遍。通过
千家信息网最后更新 2025年11月07日关于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安全错误
数据库的锁怎样保障安全
dlna服务器ipad
辽宁运营软件开发
数据库查询一个字段
国内哪里买移动服务器便宜
物料代码数据库
为什么服务器搭建好了没有网
单位网络安全要考虑的问题
2021年网络安全知识竞赛
数据库热搜表制作方法
php怎么显示数据库的表
计算机网络技术的交换功能
学好网络技术能干什么
快速清空数据库表语句
湖南hp服务器维修维保费用
网络技术会学习c语言吗
服务器密码管理机
fifa21数据库查询
北京安妮花网络技术有限公司
jdbc连接数据库原理
厦门文信网络技术有限公司
深圳德菲网络技术有限公司
中学网络安全的演讲稿
什么样的设备适合做服务器
华为mate10网速数据库
随机获得数据库中数据
财务管理需要什么服务器
网络安全第一个
软件开发规范检测
战地之王与服务器
计算机网络技术教材谁的好