SQL脚本导入oracle时检查约束重复的问题解决

前言

一位细心的同事最近发现,产品的完整SQL脚本中有一些重复的检查约束,如下所示

重复的脚本

奇怪的是,每次执行脚本时,脚本,然后是出口,在出口脚本重复的次数会增加一次。通过Navicat,最后证实,反复检查约束添加到每个输入,如下图

Navicat

这个完整卷脚本直接从数据库导出。为了便于导入其他Oracle数据库,将从产品发货库中手动删除服务名称和双引号。

以下步骤可以恢复以下步骤:



1。创建一个表


创建表(pd_web_fileupload_chunk
ID VARCHAR2(32字节)不为空,
MD5 VARCHAR2(32字节)默认的空值,
块号默认NULL无效,
file_dir VARCHAR2(200字节)不为空



你可以在上面的脚本看不空的标志,和执行后,你可以看到结果是这样在Navicat


Navicat

注意,这里的检查约束是双引号。

2。执行脚本以增加检查约束


修改表pd_web_fileupload_chunk添加检查(ID不为空);
修改表pd_web_fileupload_chunk添加检查(file_dir不为空);


两次之后,结果如图所示。


Navicat

这里,觉得终于找到原因,确认为双引号的问题。以严谨的态度,我再次确认它。

三.使用双引号执行检查约束的脚本


修改表pd_web_fileupload_chunk添加检查(ID不能为空);
修改表pd_web_fileupload_chunk添加检查(file_dir不为空);


结果如图所示。




Navicat

通过!它仍然会重复!

解决方法

为了证实这一点,我们得找出原因。

在完全导出的脚本中,脚本中隐含了一个检查约束来创建表,如果再次显示了添加的检查约束,它将被重复。因此,解决方案是手动从显示中删除所有检查约束。

总结

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一定的帮助。如果有任何疑问,您可以留言交流,谢谢您的支持。