代码之家  ›  专栏  ›  技术社区  ›  juan

如何将所有具有FK的表转到另一个表?

  •  6
  • juan  · 技术社区  · 15 年前

    是否有任何方法可以通过查询获得Oracle中所有具有另一个表的外键的表?

    3 回复  |  直到 15 年前
        1
  •  15
  •   juan    15 年前

    这里是 a good article 答案如下:

    select owner,constraint_name,constraint_type,table_name,r_owner,r_constraint_name
    from all_constraints 
    where constraint_type='R'
    and r_constraint_name in (select constraint_name from all_constraints 
    where constraint_type in ('P','U') and table_name='TABLE_NAME');
    
        2
  •  1
  •   awiebe    8 年前

    假设父表和子表都在同一架构中,请执行以下操作:

    select t1.table_name child_table, t1.constraint_name, t2.table_name parent_table
    
    from user_constraints t1, user_constraints t2
    
    where t1.r_constraint_name = t2.constraint_name
    

    请注意,r_constraint_name只为fk(类型“r”)约束填充,因此self join只返回感兴趣的信息

        3
  •  0
  •   Tamil Mani    8 年前

    如果我们知道父密钥,就用雇员表修改了Juan的答案。

    select *
    from user_constraints 
    where R_CONSTRAINT_NAME='EMP_EMP_ID_PK'
    and constraint_type='R'