如何获得外键约束的详细信息?
all_constraints表只是描述了一般的约束信息,比如是外键还是check等等,但我得到外键关联的详细信息,比如关联父表的“哪一个字段”。
假如已经知道该外键约束为 fk_con,怎样查到其详细信息。对不起,有点罗嗦,希望说明白了
问题点数:0、回复次数:7Top
1 楼BlueskyWide(谈趣者)回复于 2003-09-03 08:34:52 得分 0
参考一下,也许有所帮助。
http://expert.csdn.net/Expert/topic/2151/2151488.xml?temp=.660763Top
2 楼jiezhi(风满袖)回复于 2003-09-03 08:47:46 得分 0
http://expert.csdn.net/Expert/topic/2197/2197337.xml?temp=.6889307Top
3 楼jiezhi(风满袖)回复于 2003-09-03 08:48:31 得分 0
SQL> desc dict
名称 是否为空? 类型
----------------------------------------- -------- -----------
TABLE_NAME VARCHAR2(30
COMMENTS VARCHAR2(40
SQL> select * from dict where instr(comments,'constr')>0;
TABLE_NAME
------------------------------
COMMENTS
---------------------------------------------------------------
ALL_CONS_COLUMNS
Information about accessible columns in constraint definitions
DBA_CONS_COLUMNS
Information about accessible columns in constraint definitions
USER_CONS_COLUMNS
Information about accessible columns in constraint definitions
找到外鍵:
SELECT a.r_constraint_name,b.column_name
from user_constraints a, user_cons_columns b
where a.table_name = 'your_table' and a.constraint_type='R'
and a.constraint_name=b.constraint_nameTop
4 楼beckhambobo(beckham)回复于 2003-09-03 11:23:07 得分 0
select * from user_constraints WHERE R_CONSTRAINT_NAME='FK_CON';Top
5 楼wqhhust(wqh)回复于 2003-09-03 22:39:59 得分 0
jiezhi:
你的方法只能找到外键的名称,相关表明但不能找到该外键关联那个表,对于以下外键
alter table TEST
add constraint FP foreign key (child)
references TEST1 (parent);
我想得到外键的 Test1,以及parent信息。而不仅仅是test和child信息。
用user_cons_columns ,user_constraints 只能找到test和childTop
6 楼l2g32003(lg)回复于 2003-09-03 23:57:05 得分 0
select a.OWNER 用户名,
a.TABLE_NAME 表名,
b.COLUMN_NAME 列名
from USER_CONSTRAINTS a,USER_CONS_COLUMNS b
where a.CONSTRAINT_NAME=(select R_CONSTRAINT_NAME from USER_CONSTRAINTS
where USER_CONSTRAINTS.CONSTRAINT_NAME='CHILD')
and a.CONSTRAINT_NAME=b.CONSTRAINT_NAME
/Top
7 楼wangxt(海贝)回复于 2003-12-14 11:55:50 得分 0
-- 查询外键约束(查某表的所有父表)
select c.constraint_name,cc.column_name,rcc.owner,rcc.table_name,rcc.column_name
from user_constraints c,user_cons_columns cc,user_cons_columns rcc
where c.owner='SALIEN_SBGL'
and c.table_name='JH_NDGXLGJH_TB'
and c.constraint_type='R'
and c.owner=cc.owner
and c.constraint_name=cc.constraint_name
and c.r_owner=rcc.owner
and c.r_constraint_name=rcc.constraint_name
and cc.position=rcc.position
order by c.constraint_name,cc.position;
--查询连接到某表的所有外键(查某表的所有子表)
select rcc.owner,rcc.table_name,rcc.constraint_name,rcc.column_name,c.table_name,c.constraint_name,cc.column_name
from user_constraints c,user_cons_columns cc,user_cons_columns rcc
where lower(c.owner)='d7i'
and rcc.table_name='R5HOME'
and c.constraint_type='R'
and c.owner=cc.owner
and c.constraint_name=cc.constraint_name
and c.r_owner=rcc.owner
and c.r_constraint_name=rcc.constraint_name
and cc.position=rcc.position
order by c.constraint_name,cc.position
-- 查询主键唯一键约束
select c.constraint_name,c.constraint_type,cc.column_name
from user_constraints c,user_cons_columns cc
where c.owner='SALIEN_SBGL'
and c.table_name='JH_NDGXLGJH_TB'
and c.owner=cc.owner
and c.constraint_name=cc.constraint_name
and c.constraint_type in ('P','U')
order by c.constraint_type,c.constraint_name,cc.position;
Top



