ORA-02292_主表在有子表外键约束的情况,如何快速批量删除和插入数据?

如何正确的计算两个角度的角度差? 这一步是必要的,因为它确保了无论a相对于b是在逆时针方向还是顺时针方向,d2总是正确地反映出绕圆相反方向的角度差。这样,当函数进行最后的比较时,它能够准确地比较两个方向的旋转路径并选择最短的一个。 阅读详情

​

【引言】

最近接手一小活,需求要将一张表中的数据进行全部更新,因主表有外键关联,无法删除本表中数据,即删除有外键的表的数据时,oracle会提示:ORA-02292:integrity constraint(xx) violated - child record found,这种情况下咋个办?本文讲解之。

 

针对上述需求,有三种解决方案:

方案1:在不更改父表和子表约束条件的前提下,先删除映射主表主键的相对应的子表中数据行后,删除父表中数据,接着对主表批量insert操作,因第一步子表中已删除的数据业务还需使用,故最后一步需将子表中的对应的数据insert回子表。

 

此方法应用场景适用在主表需更新数据量少的情况下;难点是在主表数据量大的情况下,涉及到子表相应行的删除和回插操作很是繁琐,导致的业务中断时间较长,数据复核时间较长。

 

方案2:在不更改父表和子表约束条件的前提下,将父表的待更新数据行进行逐行的update操作。如每行的更新列不统一,导致的update操作会异常繁多,不亚于方案1。如因本案例中每行的更新列均不尽同,具体的update语句人工逐个更改,难度较大,纯属拼体力劳动,故不推荐此法。

 

方案3:先是的主表关联主键约束条件失效,删除主表中数据后,批量insert数据后,再让其主键约束生效。此方案可快速实现主表的批量删除、insert级联数据的需求。

 

经过对比主表原有数据集和待导入数据集,新导入的数据集包含现有主库数据集,故本文采用简单粗暴的方案3。

 

具体操作之前,先简介约束条件的启停命令和含义:

启用约束

enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束。

enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据。

禁用约束:

disable( novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作。

disable validate :关闭约束,删除索引,不能对表进行插入/更新/删除等操作。

 

主键约束的相关知识点:

 

1. 建立唯一约束或主键索约束,会同时自动创建一个与之同名的索引;

2. 如果disable约束,与之对应的索引会自动删除掉;

3. 如想插入重复数据,要暂时违反或禁用唯一约束,后来再enable就会报违反唯一约束。

 

具体操作步骤如下:

1. 首先查询表currency表的数据量

ethan_user@ethanDB> select count(*) from currency;  COUNT(*)----------       184

2. 先不做任何操作,执行下delete一行的操作,看下报错信息

ethan_user@ethanDB> delete from currency where CURRENCY_CODE='AED';delete from currency where CURRENCY_CODE='AED'*ERROR at line 1:ORA-02292: integrity constraint (ethan_user.FKCOUNTRY_CURRENCY) violated - childrecord found

查看约束条件ethan_user.FKCOUNTRY_CURRENCY的具体信息

ethan_user@ethanDB> select constraint_name,constraint_type ,status,table_name from user_constraints where constraint_name='FKCOUNTRY_CURRENCY'; CONSTRAINT_NAME--------------------------------------------------------------------------------C STATUS- --------TABLE_NAME--------------------------------------------------------------------------------FKCOUNTRY_CURRENCYR ENABLEDCOUNTRY

 

可以看出表country是表currency的子表,constraint_type为“R”,即为外键约束。

ethan_user@ethanDB> select count(*) from country;   COUNT(*)----------       248

3. 让父表的主键失效,从而让子表中的外键依赖关系失效

1.)主键失效:alter table table_name disable primary key cascade;

2.)删除数据: delete from  table_name  where id = 'xx';

3.)主键重新生效:alter table table_name enable primary key;

 

执行步骤如下:

步骤1:主键失效

通过如下主表currency的定义,查看主键约束为 CURRENCY_P

ethan_user@ethanDB> set pagesize 0ethan_user@ethanDB> set long 9999ethan_user@ethanDB> select dbms_metadata.get_ddl('TABLE','CURRENCY') from dual;

或者执行如下语句,使得表currency的主键失效

ethan_user@ethanDB> ALTER TABLE ethan_user.CURRENCY  MODIFY CONSTRAINT CURRENCY_P  DISABLE  NOVALIDATE;

或者执行

ethan_user@ethanDB> alter table currency disable primary key cascade;​Table altered.

查看表currency的主键状态

ethan_user@ethanDB> select constraint_name,constraint_type ,status,table_name from user_constraints where constraint_name='CURRENCY_P'; CONSTRAINT_NAME--------------------------------------------------------------------------------C STATUS- --------TABLE_NAME--------------------------------------------------------------------------------CURRENCY_PP DISABLEDCURRENCY

步骤2:删除主表数据

ethan_user@ethanDB> delete from currency where CURRENCY_CODE='AED'; 1 row deleted. ethan_user@ethanDB> commit; Commit complete.

步骤2:主键重新生效

ethan_user@ethanDB> alter table currency enable primary key; Table altered.

或者执行

ethan_user@ethanDB> ALTER TABLE ethan_user.CURRENCY  MODIFY CONSTRAINT CURRENCY_P  ENABLE  VALIDATE;

确认主表currency的逐渐约束是否生效

ethan_user@ethanDB> select constraint_name,constraint_type ,status,table_name from user_constraints where constraint_name='CURRENCY_P'; CONSTRAINT_NAME--------------------------------------------------------------------------------C STATUS- --------TABLE_NAME--------------------------------------------------------------------------------CURRENCY_PP ENABLEDCURRENCY

文章至此。

 

【总结】

1. 本文记录了主表在有子表外键约束的情况,如何快速批量删除和插入数据;

2. 约束条件constraint的失效和生效,本文使用了两种方式,推荐使用enable/disable novalidate/validate 的方式,可更加灵活的控制约束条件的生效与否。Alter table table_name disable primary key的方式好处在于不用先查明主键约束的名称,操控性上较为便捷。

关注个人微信公众号“一森咖记”

 

IEM模型,地表粗糙度模拟 利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟 立即下载

相关推荐

【SLAM】探索explore_lite在移动机器人自主建图中的高效边界检测策略

本文深入解析了explore_lite在移动机器人自主建图中的应用,重点探讨了其高效的贪婪边界检测策略。该工具包专为资源受限平台设计,通过直接利用SLAM生成的地图信息,以极低的计算开销实现快速、稳定的未知区域探索,并与move_base导航框架无缝协作,是轻量级机器人自主探索的优选方案。

purple的博客 1067

Oracle报错 ORA-02292: 违反完整约束条件 处理办法

但错误信息只给出了错误的原因和代码提示,其实还有一个有用的信息,就是外键约束的名称,如【XXXX.SYS_C008829】中的【SYS_C008829】就是外键名,可以根据此条件查询关联的所有表,先删除关联的数据,再删除对应的表就可以了。ORACLE数据库在使用delete删除表中的数据时,可能会报错 【ORA-02292: 违反完整约束条件 (XXXX.SYS_C008829) - 已找到子记录】,原因是有其它表与要删除的表有数据关联。解决查看语句 用于查询指定外键关联表的SQL语句。

zzh18334820165的博客 5738

AWSIM模拟器 新增多相机

本文介绍了基于Unity6引擎对AWSIM自动驾驶模拟器的优化方案,主要针对多相机系统的扩展实现。作者通过修改EgoVehicle.cs和AutowareSimulationDemo.cs核心代码,将原单相机系统升级为5相机配置。关键技术点包括:1)使用List容器管理多个CameraSensor组件;2)完善相机初始化流程;3)配置5个相机UI显示窗口;4)修改ROS话题设置。优化后的系统可支持BEVFusion等多传感器融合算法的测试验证,为Autoware.universe 0.45.0及以上版本提供

W805698955的博客 831

oracle 删除数据违反约束条件,ORA-02292: 违反完整约束条件 处理

ORA-02292: 违反完整约束条件 (用户名.约束名) - 已找到子记录:因是:删除该表时,有依赖该表的子表数据,需要删除该条记录或者禁用约束。内容少:可删除子数据即可。删除之前:查找数据,相关查询语句user_constraints 表select * from user_constraints t where t.CONSTRAINT_NAME='约束名'select * from use...

weixin_33231849的博客 8488

【PyTorch项目实战】图像分类与识别:手写数字识别(MNIST)、普适物体识别(CIFAR-10)

主要介绍了两个经典的实战项目:(1)基于 MNIST 数据集的手写数字识别(2)基于 CIFAR-10 数据集进行图像分类

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 4401

[VT虚拟化驱动]正式启动VT

文章目录前言一、vmlaunch正式开始虚拟化二、使用步骤1.引入库2.读入数据总结 前言 本章开始真正实现一个最简单的VT框架,当然,只是能跑起来一个VT驱动了,没有并包括EPT,EPT后面再讲 提示:以下是本篇文章正文内容,下面案例可供参考 一、vmlaunch正式开始虚拟化 执行VMLAUNCH指令执行后,就正式进入虚拟化了,再该指令执行之前,得先保存Guest当前的环境,执行完VMLAUNCH后,要恢复Guest的环境,让Guest就像什么都没发生一样,所以需要保存和恢复Guest的各种寄存器的值

吾无法无天的博客 3663

Oracle报错:ORA-02292: 违反完整约束条件 - 已找到子记录问题解决

### Cause: java.sql.SQLException: ORA-02292: 违反完整约束条件 (TEST.FK_TEST_FUE) - 已找到子记录 ; ORA-02292: 违反完整约束条件 (TEST.FK_TEST_FUE) - 已找到子记录 ; nested exception is java.sql.SQLException: ORA-02292: 违反完整约束条件 (TEST.FK_TEST_FUE) - 已找到子记录

黄团团的个人博客 3929

059、RealBasicVSR 实战:真实场景视频超分的退化建模与优化技巧

本文分享了RealBasicVSR在真实场景视频超分中的实战经验。针对传统方法假设理想化下采样导致的性能瓶颈,重点阐述了三个关键技术点:1)通过可学习退化编码器建模复杂未知退化过程,避免手动设计退化参数的局限;2)采用双向传播和DCN对齐增强时序一致性;3)组合多种损失函数并优化训练策略(如余弦退火学习率、随机退化增强)。作者结合项目实践指出了显存管理、训练时长、评估指标等常见问题,并给出实用建议:优先验证数据退化复杂度,重视数据预处理,合理调整超参数。文章强调真实场景视频超分的核心在于让模型自适应未知退化

ai技术增长的博客 180

Oracle删除表数据报:ora-02292:违反完整约束条件

Oracle删除表数据报:ora-02292:违反完整约束条件

dxjren的博客 5572

java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011

项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度

qq_2537071370的博客 3647

家用扫地机器人研发技术路线-第四部分:如何一步步做出来 | 4阶段 · 从原型到量产

摘要:本文详细介绍了扫地机器人从原型到量产的研发流程,分为4个关键阶段。首先聚焦四大技术难点:SLAM定位、AI视觉识别、仿生机械臂和静音风机系统。研发过程包括实验室原型验证、工程样机测试、小批量真实场景测试和量产导入四个阶段,每个阶段设有严格评审标准。特别强调测试贯穿全程,包括模块单元测试、整机集成测试、长期可靠性测试和多样化场景模拟,确保产品在上市前完成数百次真实环境验证。整个流程体现了从技术攻关到产品落地的系统性工程思维。

智能硬件研发,欢迎交流 193

【Oracle】ORA-02292: integrity constraint

识别相关表和约束、查找依赖关系。删除子记录 或 临时禁用约束。

SmartDB开源项目作者:https://github.com/wenb1n-dev/SmartDB_MCP 1219

Moviepy自动化剪辑视频中的广告

本教程展示了如何使用 Python 中的 MoviePy 库,通过检测和剪辑广告段落来实现视频内容的清洁播放。通过广告检测算法和 MoviePy 剪辑功能的结合,可以自动化处理视频,极大提升编辑效率。在学习和应用中,理解广告检测的原理及其实现方法尤为重要,以便针对不同类型的视频进行调整。此外,MoviePy 的灵活性使其适用于多种视频编辑场景,适合自动化内容制作与优化。

Mr数据杨 3416

主外键关联表的数据删除策略

说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个,各位有空帮砍下,https://w.url.cn/s/AzlPAB...

bisal的专栏 2943

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mysql 删除表数据_主外键关联表的数据删除策略

说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个,各位有空帮砍下,https://w.url.cn/s/AzlPAB9,或者扫下码,言归正传,看到老杨写的这篇小文《ORA-02292_主表在有子表外键约束的情况,如何快速批量删除和插入数据?》,很有感触,在Oracle中,主外键关系,是看似简单,实则蕴含着很多的知识。和...

weixin_39765840的博客 696

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

oracle修改字段名称 试图删除被依赖列_主外键关联表的数据删除策略

说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个,各位有空帮砍下,https://w.url.cn/s/AzlPAB9,或者扫下码,言归正传,看到老杨写的这篇小文《ORA-02292_主表在有子表外键约束的情况,如何快速批量删除和插入数据?》,很有感触,在Oracle中,主外键关系,是看似简单,实则蕴含着很多的知识。和...

weixin_31869917的博客 336

oracle修改一个表的主键为自动增长_主外键关联表的数据删除策略

说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个,各位有空帮砍下,https://w.url.cn/s/AzlPAB9,或者扫下码,言归正传,看到老杨写的这篇小文《ORA-02292_主表在有子表外键约束的情况,如何快速批量删除和插入数据?》,很有感触,在Oracle中,主外键关系,是看似简单,实则蕴含着很多的知识。和...

weixin_39525812的博客 233

数据库的约束

数据库约束 数据库对数据的合法性进行校验检查,避免数据库中被插入,修改一些非法的数据。 数据库约束类型 not null - 指示某列不能存储 null值 下图就是具体展示,未进行约束时可以进行填入null,约束之后就不能进行填入,会自动进行报错,此外就算对已有数据进行修改成null也是不行的,同样会报错。注意一点,不能再原表上就行更改约束,要重建一个表并进行约束。 不能进行修改为约束规定的情况 unique - 保证某列的每行必须有唯一的值 下图案列就可以看出unique就是和它的

qq_63074244的博客 975

oracle 子表数据变化时主表也会更新_数据库周刊27│6月数据库流行度排行;OceanBase成立新公司;腾讯云发布图数据库TGDB…...

摘要:墨天轮数据库周刊第27期发布啦,每周1次推送本周数据库相关热门资讯、精选文章、干货文档。本周分享 2020.06数据库流行度排行;OceanBase成立新公司;腾讯云发布图数据库产品TGDB;Oracle数据库坏块检查与修复;MySQL故障排查方法(附案例);经典SQL语句大全;OGG部署……热门资讯1、2020年6月数据库流行度排行:阿里云数据库创佳绩,华为GaussDB转型引热议【摘要】...

weixin_39758288的博客 158

oracle 提示:ORA-02292:integrity constraint(xxxxxxx) violated - child record found

当我们删除 数据的时候 oracle 提示:ORA-02292:integrity constraint(xxxxxxx) violated - child record found 这种情况呢是因为外键关联的存在,需删除另一个表的信息后才能将该信息删除。 这种情况首先应该去寻找是否有表与当前表存在关联,若能找到最好按顺序进行删除。若无法找到,可以采用以下的方法强制删除,但以下方法会影响数据在表中的结构,也许会形成垃圾数据(谨慎使用)。 第一步:让主键失效:alter table table_name

了迹奇有没 5499

ORA-02292: 违反完警约束条件(ARCHIVEFKA61AFE71150283EF)- 已找到子记录

ORA-02292: 违反完警约束条件(ARCHIVEFKA61AFE71150283EF)- 已找到子记录

asffsfassaffs的博客 701

ORA-02292: 违反完整约束条件

1.问题 Type Exception Report Message Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: Description The server encountered an unexpected condition...

Daneliya的博客 2547

主键与外键之ORA-02292: integrity constraint

今天在删除一个表某条记录时,出现如下错误:ORA-02292: integrity constraint (CICRO.FK8A82499F4C67C41) violated - child record found于是查看了相关的主键和约束关系,发现了一些问题。关于这个错误,oracle官方解决方法是:Error: orA-02292: integrity constraint <cons...

David 1754

ORA-02292: integrity constraint

以前碰到过多次了,现在开始记录下来. Oracle 删除的时候,碰到约束,报错ORA-02292: integrity constraint (约束名称) violated - child record found --查询一个表的约束 select CONS...

3852

ORA-02292: integrity constraint (xxxx) violated - child record found

在更新表的主键字段或DELETE数据时,如果遇到ORA-02292: integrity constraint (xxxx) violated - child record found 这个是因为主外键关系,下面借助一个小列子来...

congjiu2607的博客 1604

如何删除有外键关系的两张表的数据

如果一个字段X在一张表(表一)中是主关键字,而在另外一张表(表二)中不是主关键字,则字段X称为表二的外键;换句话说如果关系模式R1中的某属性集不是自己的主键,而是关系模式R2的主键,则该属性集称为是关系模式R1的外键。二:主键表和外键表的理解(1)以公共关键字作主键的表为主键表(父表,主表)(2)以公共关键字作外键的表为外键表(从表,外表)举个例子:这里有2张表(student和depart)学生表和院系表,这里的字段departNum就是学生表的外键,这里的外键表是学生表,主键表是院系表。

学习 记录 总结 分享 8770

Oracle中错误代码ORA-02292 违反了完整性约束条件解决

这种原因是主键与其他表关联了,解决方法如下: 1、禁用约束 alter table T_HRM_USER_INFO disable constraint PK_T_HRM_USER_INFO CASCADE PK_T_HRM_USER_INFO   这个去表中找,plqsl右键表选择view-->key,这里注意Name是约束名,Columns是表的字段名。 一定要注意con...

幼儿园大班扛把子 8434
上一篇: RAC1:我服务器要重启下,喂:RAC2你先顶一下,咋个搞?!
下一篇: linux last命令:说,前几天你是不是登陆某台服务器误操作了?
db_murphy
博客等级 码龄11年 145粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值