关于sql脚本导入Oracle时重复生成check约束的问题解决
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,前言最近在工作中一位细心的同事发现产品的全量sql脚本中有一些重复的check约束检查,就像下图这样的重复脚本怪异之处还在于,每次执行一遍该脚本,然后导出脚本,在导出脚本中重复的次数就会增加一遍。通过
千家信息网最后更新 2025年02月05日关于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安全错误
数据库的锁怎样保障安全
软件开发服务 免税
科技互联网财经文娱
爱财网络技术有限公司
数据库运维前景
大华磁盘阵列与服务器不同步
工信部颁布网络安全法
移动终端软件开发是干什么的
学网络安全要学什么
玩游戏服务器延迟是什么情况
利用脚本在数据库中查询
郑州 直销软件开发公司排名
java 服务器 框架
互联网科技的滥用
唯品会 软件开发
国家网络安全的985大学
好的软件开发设计公司哪家好
电脑32位装64数据库
服务器攻击代码
h3c网络安全实训室
数据库误操作恢复
网络服务器被动模式的部署方案
网络技术帝
记事本测试数据库连接
时间轴数据库
菜鸟驿站管理系统数据库
网络安全等级保护2.0标准系统
计算机网络技术这本书
福州市财务软件开发费用
服务器加电
海康云管理服务器