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

初衷是想根据表中存在的外键信息得到相应的索引脚本,后来才扩展到获取相应的主键字段,大同小异。

这些系统表都是相类似的,例如user_cons_columns 和user_constraints, user_indexes和user_ind_columns

[@more@]

定义一个函数,把多列的约束字段以逗号串起来

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8128313/viewspace-995309/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8128313/viewspace-995309/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值