Oracle 根据主表查找定位主外键关系

使用SYS用户定位全库的主外键关系:

select f.OWNER || '.' || f.TABLE_NAME || '.' || f.COLUMN_NAME father_col,
       c.OWNER || '.' || c.TABLE_NAME || '.' || c.COLUMN_NAME children_col
  from dba_cons_columns f, dba_cons_columns c
 where (f.CONSTRAINT_NAME, c.CONSTRAINT_NAME) in
       (select child.R_CONSTRAINT_NAME father_cons_name,
               child.CONSTRAINT_NAME   children_cons_name
          from dba_constraints father, dba_constraints child
         where father.CONSTRAINT_TYPE in ('P', 'U')
           and father.CONSTRAINT_NAME = child.R_CONSTRAINT_NAME);

使用SYS用户定位某个SCHEMA的主外键关系:

select f.OWNER || '.' || f.TABLE_NAME || '.' || f.COLUMN_NAME father_col,
       c.OWNER || '.' || c.TABLE_NAME || '.' || c.COLUMN_NAME children_col
  from dba_cons_columns f, dba_cons_columns c
 where (f.CONSTRAINT_NAME, c.CONSTRAINT_NAME) in
       (select child.R_CONSTRAINT_NAME father_cons_name,
               child.CONSTRAINT_NAME   children_cons_name
          from dba_constraints father, dba_constraints child
         where father.CONSTRAINT_TYPE in ('P', 'U')
           and father.CONSTRAINT_NAME = child.R_CONSTRAINT_NAME
           and father.OWNER in ('XXXXX'));

使用SYS用户定位某个表的外键关系:

select f.OWNER || '.' || f.TABLE_NAME || '.' || f.COLUMN_NAME father_col,
       c.OWNER || '.' || c.TABLE_NAME || '.' || c.COLUMN_NAME children_col
  from dba_cons_columns f, dba_cons_columns c
 where (f.CONSTRAINT_NAME, c.CONSTRAINT_NAME) in
       (select child.R_CONSTRAINT_NAME father_cons_name,
               child.CONSTRAINT_NAME   children_cons_name
          from dba_constraints father, dba_constraints child
         where father.CONSTRAINT_TYPE in ('P', 'U')
           and father.CONSTRAINT_NAME = child.R_CONSTRAINT_NAME
           and father.OWNER in ('XXXXX')
           and father.table_name in ('XXXXX'));

使用SCHEMA定位自己的所有主外键关系:

select f.OWNER || '.' || f.TABLE_NAME || '.' || f.COLUMN_NAME father_col,
       c.OWNER || '.' || c.TABLE_NAME || '.' || c.COLUMN_NAME children_col
  from user_cons_columns f, user_cons_columns c
 where (f.CONSTRAINT_NAME, c.CONSTRAINT_NAME) in
       (select child.R_CONSTRAINT_NAME father_cons_name,
               child.CONSTRAINT_NAME   children_cons_name
          from user_constraints father, user_constraints child
         where father.CONSTRAINT_TYPE in ('P', 'U')
           and father.CONSTRAINT_NAME = child.R_CONSTRAINT_NAME);

使用SCHEMA定位自己的某个表的外键关系:

select f.OWNER || '.' || f.TABLE_NAME || '.' || f.COLUMN_NAME father_col,
       c.OWNER || '.' || c.TABLE_NAME || '.' || c.COLUMN_NAME children_col
  from user_cons_columns f, user_cons_columns c
 where (f.CONSTRAINT_NAME, c.CONSTRAINT_NAME) in
       (select child.R_CONSTRAINT_NAME father_cons_name,
               child.CONSTRAINT_NAME   children_cons_name
          from user_constraints father, user_constraints child
         where father.CONSTRAINT_TYPE in ('P', 'U')
           and father.CONSTRAINT_NAME = child.R_CONSTRAINT_NAME
           and father.table_name in ('XXXXX'));

[TOC]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值