这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。 我也要与时俱进了,被itpub2.0牵着尾巴,拼命的奔跑,不停的灌水...

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

上一篇 / 下一篇  2007-12-20 00:00:00 / 个人分类:数据库专区

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

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


9XT/~.z6M8y7`\ Bj0

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

create or replace function f_GetConstraintColumn(itablename in Varchar2,iConstraintName in Varchar2)ITPUB个人空间r \3j0A:mQ \*N
return varchar2 is
,q._P0k,u~+v0type cur_type is ref cursor;
K0E+HtJd x#xVz#s.z0myCur cur_type;
8[xAJ)sC$U2_`0v_Column1Value varchar2(4000);
@VZ y3ba{0v_Result varchar2(32767);
h2] D|,F8?8A~0begin
0K lFy*jMQ1t+u0Open myCur for Select COLUMN_NAMEITPUB个人空间 [M+_:U-Hs
From user_cons_columns
ya0N/CX;x0Where table_name=itablename And constraint_name=iConstraintName
y&W+B.xD |js gTA v N0Order By POSITION;ITPUB个人空间(R4~ V9f6o6m&| {'i!x
LoopITPUB个人空间 C J9}%zN W
Fetch myCur Into v_Column1Value;
B!{6[Fw\0Exit When myCur%notfound;
.@5UpT1KFy.a0v_Result:=v_Result||v_Column1Value||',';ITPUB个人空间7^O-x3R!?
End Loop;ITPUB个人空间'WFIC;\?9N"r
Close myCur;ITPUB个人空间 lh/Gn mU L }3Z|5A
v_Result:=substr(v_Result,1,length(v_Result)-1);ITPUB个人空间 fM0tbt7o
return(v_Result);
3J:F^!c2N?Mf0end ;

--该语句用来得到外键表、外键约束名称、外键字段和相应的主键表、主键字段,主键约束名称等等,稍作改动便可以写出创建相应的约束脚本和索引脚本

SelectITPUB个人空间\!\4bT~Hi$A2Jg
a.table_name ForeignKeyTableName, a.constraint_name,f_GetConstraintColumn(a.table_name, a.constraint_name) ForeignKeyColumnsName,ITPUB个人空间 _v^8F#O]|Y
a.r_constraint_name,b.table_name PrimaryKeyTableName,f_GetConstraintColumn(b.table_name, a.r_constraint_name) PrimaryKeyColumnsName
{xC"wy.A Q&z0From user_constraints a,user_constraints bITPUB个人空间U Yl9mhZ T,}
Where a.constraint_type='R'
+g\~7_P}.{0m0And a.r_constraint_name=b.constraint_name
&^ b~-e0^*[JLa`9k0-- And a.table_name = 'T_FACTORING_INV'ITPUB个人空间q1?PQ [7U*L;QV
Order By a.table_name, a.constraint_name


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-07  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 17136
  • 日志数: 60
  • 建立时间: 2007-12-07
  • 更新时间: 2008-07-01

RSS订阅

Open Toolbar