关于primary key和foreign key的问题处理(60天)
时间:2022-05-04
本文章向大家介绍关于primary key和foreign key的问题处理(60天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天碰到一个问题,在drop primary key的时候,提示ORA-02273的错误。
SQL> ALTER TABLE AR1_ACCOUNT DROP PRIMARY KEY;
ALTER TABLE AR1_ACCOUNT DROP PRIMARY KEY
*
ERROR at line 1:
ORA-02273: this unique/primary key is referenced by some foreign keys
通过下面的字典表查找的关联的表
SQL> SELECT con.constraint_name const_name, con.constraint_type const_type,
2 con.table_name, con.search_condition search_cond,
3 con.r_constraint_name r_const, col.table_name r_table,
col.column_name r_column
FROM user_constraints con, user_cons_columns col
WHERE col.constraint_name = con.r_constraint_name 4 5 6
7 AND col.table_name='AR1_ACCOUNT';
CONST_NAME C TABLE_NAME SEARCH_COND R_CONST R_TABLE R_COLUMN
------------------------------ - ------------------------------ -------------------- ------------------------------ ------------------------------ --------------------
AR3_GL_UNBILLED_REV_1FK R AR3_GL_UNBILLED_REV AR1_ACCOUNT_PK AR1_ACCOUNT ACCOUNT_ID
到此为止,我想为了保险起见,先把表AR3_GL_UNBILLED_REV的foreign key disable以后,再来drop这个表AR1_ACCOUNT 的primary key
使用alter table xxxx disable constraint xxxx;
执行成功了,但是drop primary key的时候还是提示错误 ORA-02273
没办法,看来disable不行,那只能drop了,为了保险起见,先来spool一下创建constraint 的ddl 语句,但是调用时,又出现了问题。
SQL> SELECT DBMS_METADATA.GET_DDL('CONSTRAINT','AR3_GL_UNBILLED_REV_1FK')FROM DUAL;
ERROR:
ORA-31603: object "AR3_GL_UNBILLED_REV_1FK" of type CONSTRAINT not found in
schema "TEST"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA", line 3149
ORA-06512: at "SYS.DBMS_METADATA", line 4787
ORA-06512: at line 1
查询网上所说,有的人说可能是权限问题,赋予select_catalog_owner权限就好了。但是很奇怪的,怎么试都不行。
最后查了下大家的反馈,确定这是一个bug.这也是dbms_metadata的一个一个限制,在11g版本这个问题依然存在。
最后做了一个表的ddl,这样就包含了foreign key的信息
然后drop了foreign key的constraint之后,drop primary key的操作就可以了继续了。
在脚本最后,需要记得重建那个foreign key.
SQL> ALTER TABLE AR3_GL_UNBILLED_REV ADD CONSTRAINT AR3_GL_UNBILLED_REV_1FK FOREIGN KEY (ACCOUNT_ID) REFERENCES AR1_ACCOUNT(ACCOUNT_ID);
Table altered.
- ASP.NET MVC学习笔记07数据表和模型添加新字段
- 以太坊·电影院场景区块链应用探索
- 最全爬虫攻略:微博、APP、公众号一个不能少!
- 注册中心 Eureka 源码解析 —— Eureka-Client 初始化(一)之 EurekaInstanceConfig
- 无论人工智能发展到什么地步,都离不开这6段代码
- Dubbo源码解析 —— 逻辑层设计之服务降级
- 【死磕Java并发】-----J.U.C之Condition
- 数据库中间件 MyCAT 源码分析 —— 【单库单表】查询
- 数据库中间件 MyCAT源码分析:【单库单表】插入
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 分布式事务 TCC-Transaction 源码解析 —— 事务存储器
- 注册中心 Eureka 源码解析 —— 调试环境搭建
- 一样的代码、不一样的写法,JavaScript必知的简写技巧|附源代码
- 【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Liunx(centos8)下的yum的基本用法和实例(推荐)
- Android中LeakCanary检测内存泄漏的方法
- Linux 查看磁盘IO并找出占用IO读写很高的进程
- Android实现简单的拨号器功能
- Android调用系统自带浏览器打开网页的实现方法
- Linux之删除带有空格的文件(不是目录)
- Android自定义AvatarImageView实现头像显示效果
- 如何使用win10内置的linux系统启动spring-boot项目
- Android 实现单线程轮循机制批量下载图片
- Android开发之项目模块化实践教程
- Linux centos7 下安装 phpMyAdmin的教程
- 简单学习Android TextView
- Android 滑动返回Activity的实现代码
- centos7搭建hadoop2.10高可用(HA)
- 在 React 中实现 keep alive(可参与文末讨论哦)