前言

最近在工作中一位细心的同事发现产品的全量sql脚本中有一些重复的check约束检查,就像下图这样的

怪异之处还在于,每次执行一遍该脚本,然后导出脚本,在导出脚本中重复的次数就会增加一遍。通过navicat,最终确认每导入一次就会新增加一条重复的check约束,如下图所示

这个全量脚本是直接从数据库中导出的,为了方便导入其他的Oracle数据库中,从产品的出货库导出时手动去掉了服务名、双引号。

通过如下步骤可复现该问题:

1.创建表

sql;">

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约束的脚本

sql;">

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约束的脚本

sql;">

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

靠!居然还是会重复生成!

验证到这里,算是找出了原因。

在全量导出的脚本中,创建表的脚本中已经隐含了检查约束,如果再显示的添加检查约束就会重复生成。所以,解决办法为需要手动删除所有显示的检查约束。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程之家的支持。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

oracle 批量生成约束,关于sql脚本导入Oracle时重复生成check约束的问题解决相关推荐

  1. oracle 导入sql文件 汉字乱码_将现有的sql脚本导入 Oracle 数据库,中文乱码问题...

    将现有的sql 脚本导入 Oracle数据库 比如 在windows 系统下,可以写一个 bat 来实现直接导入 如:bat 中的内容如下,logs.log 将会记录执行日志 sqlplus user ...

  2. oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...

    记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 问题现象: STARiBOSS5.8.1R2版本中,河北对帐JOB执行时,无法生成发票对帐文件. 首先,Quartz表达式培植的启动时间为 ...

  3. sql脚本导入sql_学习SQL:SQL脚本

    sql脚本导入sql I can hardly imagine making any complex database changes without using SQL scripts. We ac ...

  4. 三步搞定oracle 11G 导出的pmd文件,导入oracle 12C数据库中

    将oracle 11G 导出的pmd文件,导入oracle 12C数据库中,将面临数据库用户名不匹配问题,12C用户名必须前缀c##,而导出的pmd文件又带原始11G数据库的用户名,无法在12C中建不 ...

  5. sqlplus中批量执行sql脚本(Oracle)

    假如我们有很多sql脚本,如果一个一个sql脚本文件执行显然过于麻烦,下边我们演示sql脚本批量执行. 解决方法:将需要执行的sql脚本文件的@绝对路径 存放到一个脚本文件中,然后执行这个脚本文件就可 ...

  6. SQLServer 2000 生成数据源的SQL脚本

    在进行SQL Server 2000数据库迁移的时候,某些数据库只需要将表结构创建即可,这个时候就需要用到源数据库的SQL脚本,生产环境就不动了,怕出点什么乱子,下面还是以pubs为例进行演示: 我的 ...

  7. mysql脚本文件生成工具_SqlDataToScript(sql脚本生成工具)

    SQLServer脚本生成工具是一款用于SQLServer表生成Insert脚本的工具,可以快速的为您自动生成脚本,而且格式规范,可自动生成也可以手动生成.. 相关软件软件大小版本说明下载地址 SQL ...

  8. mysql导入sql文件时 避开_利用SQL脚本导入数据到不同数据库避免重复的3种方法...

    前言 相信大家都有所体会,无论何种语言,一旦看见代码中有重复性的代码则想到封装来复用,在SQL同样如此,若我们没有界面来维护而且需要经常进行的操作,我们会写脚本避免下次又得重新写一遍,但是这其中就涉及 ...

  9. 关于MSSQL导入导出时主键与约束丢失的问题解决

    导入数据时,使用默认选项,会丢失主键.约束.默认值等属性,按如下步骤操作: -->导出向导  -->选择数据源  -->选择目的  -->指定表复制或查询:不要使用默认选项,选 ...

  10. sql loader 导入数据时的问题

    2019独角兽企业重金招聘Python工程师标准>>> 在使用oracle sql loader 工具导入数据时遇到的问题,具体的shell脚本如下: #!/bin/bashexpo ...

最新文章

  1. js弹出一段html,html js 弹出层
  2. Chapter 7. Testing and Debugging
  3. 用MapReduce实现矩阵乘法
  4. Programming Computer Vision with Python (学习笔记十一)
  5. OpenGL创建多维数据集的多个实例
  6. HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。...
  7. [Swift]LeetCode1146. 快照数组 | Snapshot Array
  8. python中执行shell命令的几个方法
  9. 计算机的软键盘在哪里,Win8软键盘在哪 Win8.1屏幕键盘打开方法图解
  10. 。三十功名尘与土,八千里路云和月。莫等闲,白了少年头,空悲切
  11. 干货!探索单目车辆估计中的中间几何表示
  12. 【云和恩墨大讲堂】SQL 审核 | 细致入微,方显价值
  13. 各大银行网银转账手续费一览表
  14. [转载]JS和AS交互 作者:ludanlove
  15. 工具及方法 - 查询IP信息
  16. 国产可视化引擎PIE-Earth助力实景三维中国建设
  17. iframe相关,iframe样式
  18. keil的sct文件_STM32 分散加载文件 .sct 解析
  19. F:\ 上的回收站已损坏。是否清空该驱动器上的“回收站“?
  20. 给女生说一些关于软件测试职场的一些真实的建议~

热门文章

  1. 多视几何_计算一副图像上的点在另一福图像上的对应点
  2. 论文笔记_S2D.52_CMRNet++:在激光雷达地图中进行内参未知的相机的单目视觉定位
  3. 一文看懂Python列表表达式及高阶函数如lambda, zip, enumerate, map和filter方法
  4. PicoDet网络结构在YOLOv5-Lite上的复现
  5. OWOD:开放世界目标检测,更贴近现实的检测场景 | CVPR 2021 Oral
  6. 在小树林飞也能又快又稳,这是港科大沈劭劼组的「猛禽」无人机重规划框架...
  7. Deep Convolutional Network Cascade for Facial Point Detection论文算法解析
  8. 关于Fragment 不响应onActivityResult的情况分析
  9. P5231 [JSOI2012]玄武密码
  10. easyUI-combotree的本地数据导入