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

关于外键约束和对应主键信息的查询脚本

初衷是想根据表中存在的外键信息得到相应的索引脚本,后来才扩展到获取相应的主键字段,大同小异。
这些系统表都是相类似的,例如user_cons_columns 和user_constraints, user_indexes和user_ind_columns
 

定义一个函数,把多列的约束字段以逗号串起来
create or replace function f_GetConstraintColumn(itablename in Varchar2,iConstraintName in Varchar2)
return varchar2 is
type cur_type is ref cursor;
myCur cur_type;
v_Column1Value varchar2(4000);
v_Result varchar2(32767);
begin
Open myCur for Select COLUMN_NAME 
From user_cons_columns 
Where table_name=itablename And constraint_name=iConstraintName
Order By POSITION;
Loop
Fetch myCur Into v_Column1Value;
Exit When myCur%notfound;
v_Result:=v_Result||v_Column1Value||',';
End Loop;
Close myCur;
v_Result:=substr(v_Result,1,length(v_Result)-1);
return(v_Result); 
end ;
--该语句用来得到外键表、外键约束名称、外键字段和相应的主键表、主键字段,主键约束名称等等,稍作改动便可以写出创建相应的约束脚本和索引脚本
Select 
a.table_name ForeignKeyTableName, a.constraint_name,f_GetConstraintColumn(a.table_name, a.constraint_name) ForeignKeyColumnsName,
a.r_constraint_name,b.table_name PrimaryKeyTableName,f_GetConstraintColumn(b.table_name, a.r_constraint_name) PrimaryKeyColumnsName
From user_constraints a,user_constraints b
Where a.constraint_type='R' 
And a.r_constraint_name=b.constraint_name
-- And a.table_name = 'T_FACTORING_INV'
Order By a.table_name, a.constraint_name

 





本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/312778 ,如需转载请自行联系原作者

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • struts2知识复习之二
  • 将链表逆序(Revert)的C#实现
  • 高中数学中需要重点关注的函数和图像
  • 如何实现DES算法
  • TensorFlow系列专题(三):深度学习简介
  • top命令解析
  • Tensorflow 笔记
  • 经典总结:PERL中用DBD:ORACLE模块的权限问题
  • 许昌五女店考场考试安排
  • perl链接数据库实例
  • android的四种线程池
  • mybatis0210 mybatis和ehcache缓存框架整合
  • 激活 win10 企业版2016长期服务版本
  • jQuery MD5加密
  • node.js 安装,你会吗?
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【刷算法】求1+2+3+...+n
  • Consul Config 使用Git做版本控制的实现
  • ECS应用管理最佳实践
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JAVA_NIO系列——Channel和Buffer详解
  • Java|序列化异常StreamCorruptedException的解决方法
  • Phpstorm怎样批量删除空行?
  • React-Native - 收藏集 - 掘金
  • ReactNativeweexDeviceOne对比
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 少走弯路,给Java 1~5 年程序员的建议
  • 思考 CSS 架构
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一道闭包题引发的思考
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #ifdef 的技巧用法
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (02)vite环境变量配置
  • (C++17) std算法之执行策略 execution
  • (第30天)二叉树阶段总结
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (南京观海微电子)——COF介绍
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)用.Net的File控件上传文件的解决方案
  • ****Linux下Mysql的安装和配置
  • .net 7 上传文件踩坑
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况