PS:这里是给自己做个备忘,下次遇到同类问题的时候,方便查找;

  客户在有主外键关系的2张表进行页面删除时报错已有子记录,运维后台处理的时候应该找出相应的数据,先删除子记录,在删主表记录;但客户要的急,就执行了错误的操作,删除了外键约束,在执行的删除,但在通过alter语句进行添加外键的时候,报错未找到父项关键字;

网上搜索了下,说未找到父项关键字的原因是2张表的数据不统一,后通过minus关键字查询2张表的差值,确实存在;

在google之后发现了2种方法可以解决:

  1、删除多余的数据,保持2张表数据统一,在执行 alter table 表1 add constraint FK_XXX foreign key(字段1)  references 表2 (字段2);就不会报错了;

(ps:这种方式在实际生产过程中不实际,生产环境数据不能随便删除的,所以这种方式不现实,不推荐)

  2、在alter语句之后加上enable novalidate即可,即

alter table 表1 add constraint FK_XXX foreign key(字段1)  references 表2 (字段2) enable novalidate;

(ps:enable novalidate指的是允许已有记录不满足约束条件,但新增/修改的记录则必须满足约束条件)

这是其他3种的含义:

  Enable Validate与Enable相同,检查已有记录和新增记录,确保都符合约束;

  Disable Validate禁用约束,删除约束上的索引,不允许修改任何被约束的记录;

  Disable Novalidate与Disable相同,禁用约束,删除约束上的索引,且允许修改被约束的记录。
---------------------
关于oracle约束关键字Enable/Disable/Validate/Novalidate的详情,可以查看这篇原文,传送门
原文:https://blog.csdn.net/huang_xw/article/details/6396846

最新文章

  1. IIS中启用ASP并连接Access数据库的解决办法
  2. javascript 多线程Web Worker不引用外部js文件的方法
  3. hdu 1573 X问题 (非互质的中国剩余定理)
  4. duilib进阶教程 -- 设置资源路径 (15)
  5. STM32启动文件选择说明
  6. Control character in cookie value, consider BASE64 encoding your value
  7. hdu 1166 敌兵布阵(线段树单点更新,区间查询)
  8. AudioServicesPlaySystemSound音频服务—备用
  9. python 数据驱动(ddt)
  10. 201521145042《Java程序设计》第14周学习总结
  11. JS实现鼠标放在文字上面显示全部内容
  12. 搭建属于自己的GIT服务器——pingg
  13. ubuntu 下安装docker 踩坑记录
  14. 计算基因上外显子碱基覆盖度(exon coverage depth):Samtool工具使用
  15. 数据库隔离级别深入理解(ORACLE)
  16. linux服务器磁盘扩容的方法
  17. Kafka: Connect
  18. 机器学习实战-KNN
  19. TensorFlow笔记-05-反向传播,搭建神经网络的八股
  20. 【HTML5】实现QQ聊天气泡效果

热门文章

  1. Coderfroces 862 C. Mahmoud and Ehab and the xor
  2. BZOJ3569: DZY Loves Chinese II(线性基构造)
  3. hzwer 模拟题 祖孙询问
  4. Expression表达式树(C#)
  5. js插件---markdown如何使用
  6. js --- 事件冒泡 事件捕获
  7. ElasticSearch 工作原理
  8. java(内部类)
  9. css3--根据数据加载显示的一个动画
  10. 小米开源文件管理器MiCodeFileExplorer-源码研究(8)-文件排序工具类FileSortHelper