这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。
我也要与时俱进了,被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+HtJdx#xVz#s.z0myCur cur_type;
8[ xAJ)sC$U2_`0v_Column1Value varchar2(4000);
@V Zy3ba{0v_Result varchar2(32767);
h2] D|,F8?8A~0begin
0KlFy*jM Q1t+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
| jsgTA 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个人空间'WF IC;\?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: