返回顶部
首页 > 资讯 > 数据库 >Oracle违反约束数据的workaround
  • 715
分享到

Oracle违反约束数据的workaround

2024-04-02 19:04:59 715人浏览 薄情痞子
摘要

最近为测试做一些数据导入,其中存在一些主子表,由于种种原因,子表有些记录,外键值在主表无记录,导致数据导入过程中,无法创建外键, Failing sql is: ALTER TABLE &quo

最近为测试做一些数据导入,其中存在一些主子表,由于种种原因,子表有些记录,外键值在主表无记录,导致数据导入过程中,无法创建外键,

Failing sql is:

ALTER TABLE "A" ADD CONSTRAINT "FK_A_REF_B" FOREIGN KEY ("A_ID") REFERENCES "B" ("ID") ENABLE

ORA-39083: Object type REF_CONSTRAINT failed to create with error:

ORA-02298: cannot validate (FK_A_REF_B) - parent keys not found


此时若手工执行,

ALTER TABLE A ADD CONSTRAINT FK_A_REF_B FOREIGN KEY (A_ID) REFERENCES B (ID) ENABLE;


就会提示ORA-02298,

oerr ora 2298
02298, 00000,"cannot validate (%s.%s) - parent keys not found"
*Cause: an alter table validating constraint failed because the table has orphaned child records.
*Action: Obvious


这种数据不规则,难以满足数据完整性要求。此时,可以使用not validate的方式,对历史数据不进行约束控制,而只针对新数据开启验证。

alter table a add constraint fk_a_ref_b foreign key(a_id) references b(id) novalidate;


针对正在修改的数据,以及存在的数据,可以有不同的生效设置,oracle官方文档的介绍,


下面可以根据rowid,定位A表违规数据,要么删除,要么改造,让其符合约束,进而就可以正常执行。

select * from A where rowid in (select row_id from exceptions);


需要注意的是,exceptions是一张普通堆表,因此存储的数据,需要自行清理,要么执行truncate,要么执行drop。



总结

1. 针对不规则数据,可以使用alter table ... NOVALIDATE,对历史数据不做约束,只约束新增数据。

2. alter table可以使用exceptions into子句,让非法数据自动记录,异常表exceptions可以使用脚本,也可以自行创建,但需要自行清理,利用这张表可以整理数据,纠正不规则数据。

您可能感兴趣的文档:

--结束END--

本文标题: Oracle违反约束数据的workaround

本文链接: https://lsjlt.com/news/48775.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle违反约束数据的workaround
    最近为测试做一些数据导入,其中存在一些主子表,由于种种原因,子表有些记录,外键值在主表无记录,导致数据导入过程中,无法创建外键, Failing sql is: ALTER TABLE &quo...
    99+
    2024-04-02
  • MongoDB怎样处理批量update违反唯一约束的key
    MongoDB怎样处理批量update违反唯一约束的key,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。    ...
    99+
    2024-04-02
  • 【Oracle Database】数据库约束管理
    主键约束 SQL> alter table customers add constraint customers_pk primary key (customer_id);   Table alter...
    99+
    2024-04-02
  • 如何违反golang函数命名约定?
    尽管遵循 go 函数命名约定至关重要,但在以下情况下可以违反:增强可读性:添加后缀以区分类似但略有不同的函数名称。与现有库集成:匹配库的命名惯例。保持 api 兼容性:避免破坏现有客户端...
    99+
    2024-05-03
    go 命名约定 golang 代码可读性
  • 数据库---约束
    一、概述        创建表的时候可以给表中的数据添加数据校验规则,这些规则称之为约束。 在创建表的时候,同时可以指定所插入数据的一些规则,比如某个字段不能为空值; 某个字段的值(比如年龄)不能小于零等等。这些规则称为约束。 约束是在表...
    99+
    2016-09-13
    数据库---约束 数据库入门 数据库基础教程 数据库 mysql
  • Oracle数据库中的约束是什么
    在Oracle数据库中,约束是用来确保数据完整性和一致性的规则。约束可以应用在表的列级别或表级别,常见的约束类型包括: 主键约束:...
    99+
    2024-03-02
    Oracle
  • Oracle的约束介绍与约束维护
    目录一、什么是约束?二、约束分类1、not null(非空)2、default(默认)3、unique(唯一)4、primary key(主键)5、foreign key(外键):6...
    99+
    2024-04-02
  • MySQL数据库的约束
    文章目录 一、约束是什么?二、约束的具体操作Not NULLUNIQUE约束的组合使用PRIMARY KEYDEFAULTFOREIGN KEY 一、约束是什么? 约束就是,在创建表的时候,对表设置一些规则,只有满足这些规...
    99+
    2023-08-30
    数据库 mysql sql
  • 【MySQL】数据库的约束
    MySQL 数据库的约束 文章目录 MySQL 数据库的约束01 数据库的约束1.1 约束类型1.1.1 NOT NULL1.1.2 UNIQUE1.1.3 DEFAULT1.1.4 PRIM...
    99+
    2023-09-12
    数据库 mysql adb
  • 数据库主键约束
    mssql数据库的主键约束中,主键名查询: exec sp_pkeys '数据表名' 修改主键名称的方法: --第一步,删除主键约束 alter table 表名 drop constraint 主键名; --第二步,添加主键约束...
    99+
    2019-04-11
    数据库主键约束
  • 浅谈数据库约束
    国有国法 家有家规其实很多时候技术和生活息息相关,怎样的需求就会有出来解决方案数据库也是那么一个神奇的东西,毕竟是关系型数据库,数据独立而又可以表表关联,有时候就需要约束,在某些时候要规规矩矩做人做事,才能...
    99+
    2024-04-02
  • 【MySQL数据库】一约束
    🍁博客主页:👉@不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉MySQL数据库专栏 ✨欢迎加...
    99+
    2023-09-28
    数据库 mysql java
  • Oracle数据库中怎么创建字段约束
    本篇文章给大家分享的是有关Oracle数据库中怎么创建字段约束,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。非空约束唯一约束对字段的取值的约束...
    99+
    2024-04-02
  • MySQL数据库约束详解
    目录基本介绍1.primary key(主键)细节说明2.not null(非空)3.unique(唯一)unique细节4.foreign key(外键)foreign key(外键)语法外键细节说明5.checkch...
    99+
    2024-04-02
  • oracle的表级约束和列级约束有什么区别
    表级约束和列级约束都是用来保证数据的完整性和一致性的约束条件,但它们之间有一些区别: 表级约束是针对整个表的约束条件,而列级约束是...
    99+
    2024-04-20
    oracle
  • MySQL数据库约束,表的设计
    ❤️Author: 老九 ☕️个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏:MySQL通关系列 文章目录 数据库约束no...
    99+
    2023-09-17
    数据库 mysql database
  • MySQL:数据类型和表的约束
    1. 数据类型 学习语言的时候首先就是学习数据类型,数据类型起着为变量合理分配空间的作用。数据库同样需要合理使用空间,其次还可以约束SQL语句的正确性,所以同样需要数据类型。 1.0. 数据类型分类 分类数据类型解释数值类型BIT (...
    99+
    2023-08-16
    mysql 数据库
  • MySQL数据库表约束讲解
    目录mysql数据库表约束一、主键约束二、外键约束三、非空约束四、唯一约束五、默认约束六、自增约束数据库建表的约束条件常用约束条件及简单介绍MySQL数据库表约束 为了防止往数据表中插入错误的数据,在MySQL中,定义了...
    99+
    2022-06-20
    MySQL数据库 数据库表约束 MySQL表约束
  • MySQL数据库表中的约束详解
    目录mysql表中的约束(constraint)约束分类非空约束唯一性约束复合约束主键约束自增列-AUTO_INCREMENT外键约束FOREIGN KEY约束CHECK约束DEFAULT约束MySQL表中的约束(con...
    99+
    2023-03-02
    MySQL表中的约束 MySQL数据库约束 MySQL约束的使用
  • MySQL数据库的约束使用实例
    目录1. NULL约束2. UNIQUE(唯一约束)3. DEFAULT(默认值约束)4. PRIMARY KEY(主键约束)5. FOREIGN KEY(外键约束)数据库的约束就是关系型数据库给我们提供的一种"...
    99+
    2022-12-03
    MySQL数据库的约束 MySQL数据库约束语句
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作