当前位置: 首页 > news >正文

启用约束时使用exceptions表来跟踪不符合约束的数据并修正

启用约束时使用exceptions表来跟踪不符合约束的数据并修正
使用 EXCEPTIONS 表
1. 创建 EXCEPTIONS 表 (utlexcpt.sql)
2. 使用 EXCEPTIONS 子句执行 ALTER TABLE
3. 使用 EXCEPTIONS 子查询查找包含无效数据的行
4. 纠正错误
5. 再次执行 ALTER TABLE 以启用约束

如何识别行违反
EXCEPTIONS 子句帮助识别任何违反已启用的约束的行按下列步骤检测违反
约束的行为纠正它们并重新启用约束
1 如果还未创建请在管理目录中运行 utlexcpt.sql 脚本以创建异常表
SQL> @?/rdbms/admin/utlexcpt
Statement processed.
SQL> DESCRIBE exceptions
Name Null?Type
-------------------------- ------- ----------------
ROW_ID UNDEFINED
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
CONSTRAINT VARCHAR2(30)
在 Windows NT 中该脚本位于
%ORACLE_HOME%\RDBMS\ADMIN 目录下
2 使用 EXCEPTIONS 子句执行 ALTER TABLE 命令
SQL> ALTER TABLE summit.employee
2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk
3 EXCEPTIONS INTO system.exceptions;
ALTER TABLE summit.employee
*
ORA-02298:cannot enable (summit.EMP_DEPT_FK) - parent keys not
found
如果 EXCEPTIONS 表未用所有者姓名限定则它必须属于正改变
的表的所有者
将行插入 EXCEPTIONS 表中如果重新运行该命令将截断
EXCEPTIONS 表以删除全部现有的行
3 使用 EXCEPTIONS 表上的子查询标识无效数据
SQL> SELECT rowid, id, last_name, dept_id
2 FROM summit.employee
3 WHERE ROWID in (SELECT row_id
4 FROM exceptions)
5 FOR UPDATE;
ROWID ID LAST_NAME DEPT_ID
------------------- ----- --------------- --------
AAAAeyAADAAAAA1AAA 1003 Pirie 50
1 row selected.
4 更正数据中的错误
SQL> UPDATE summit.employee
2 SET id=10
3 WHERE rowid='AAAAeyAADAAAAA1AAA';
1 row processed.
SQL> COMMIT;
Statement processed.

5 截断 EXCEPTIONS 表并重新启用约束
SQL> TRUNCATE TABLE exceptions;
Statement processed.
SQL> ALTER TABLE summit.employee
2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk
3 EXCEPTIONS INTO system.exceptions;
Statement processed

相关文章:

  • Combination Sum系列问题
  • js中容易被忽视的事件问题总结
  • Web Service 接口安全与解决方案
  • B树、B-树、B+树、B*树的定义和区分
  • 史上最全大数据学习资源整理(1)
  • Hive操作表部分总结
  • 电邮欺诈需重视 TurboMail邮件系统保护您
  • IOS-利用AFNetworking监听网络状态
  • WCF学习之旅—WCF服务部署到应用程序(十)
  • 第三节课作业——指针
  • AngularJS 应用身份认证的技巧
  • UDP数据报
  • 实时预测用户对物品偏好 阿里云推荐引擎帮助你更好的提升业务
  • PHPer书单
  • 【译】使用newInstance()来实例化fragment
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 0x05 Python数据分析,Anaconda八斩刀
  • 230. Kth Smallest Element in a BST
  • Apache的80端口被占用以及访问时报错403
  • java中具有继承关系的类及其对象初始化顺序
  • Quartz初级教程
  • 编写高质量JavaScript代码之并发
  • 从零搭建Koa2 Server
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 力扣(LeetCode)21
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 少走弯路,给Java 1~5 年程序员的建议
  • 深入浅出Node.js
  • 使用parted解决大于2T的磁盘分区
  • 微信小程序设置上一页数据
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • Hibernate主键生成策略及选择
  • 进程与线程(三)——进程/线程间通信
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #FPGA(基础知识)
  • (42)STM32——LCD显示屏实验笔记
  • (5)STL算法之复制
  • (k8s中)docker netty OOM问题记录
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)模仿学习-完成后台管理页面查询
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)socket Aio demo
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .net与java建立WebService再互相调用
  • .project文件