代码之家  ›  专栏  ›  技术社区  ›  Misha M

如何在Oracle中查找外键的引用列[[副本]

  •  1
  • Misha M  · 技术社区  · 8 年前

    我正在尝试找出如何查找外键引用的列的名称。

    下面是一个要演示的示例,请记住,我正在尝试为数百个表动态查找这个。

    • 小装置
      • 身份证件
      • 组件ID
      • ...
      • 身份证件
      • 姓名

    WIDGET.COMPONENT_ID PART.ID

    我有个问题要问 PART 从 WIDGET_COMPONENT_ID .

    编辑:

    引用的列名 . 我可以找到表名,但我不知道如何找到列名。

    (sql来自 List of foreign keys and the tables they reference )

    SELECT c_pk.constraint_name, c_pk.table_name r_table_name FROM all_cons_columns a JOIN all_constraints c ON a.owner = c.owner AND a.constraint_name = c.constraint_name JOIN all_constraints c_pk ON c.r_owner = c_pk.owner AND c.r_constraint_name = c_pk.constraint_name WHERE c.constraint_type = 'R' AND a.table_name = 'WIDGET'

    COMPONENT_ID_FK 和 零件 . 如何从 组件ID 到 虽然我不确定。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Misha M    8 年前

    SELECT * FROM all_cons_columns WHERE constraint_name IN ( SELECT c_pk.constraint_name FROM all_cons_columns a JOIN all_constraints c ON a.owner = c.owner AND a.constraint_name = c.constraint_name JOIN all_constraints c_pk ON c.r_owner = c_pk.owner AND c.r_constraint_name = c_pk.constraint_name WHERE c.constraint_type = 'R' AND a.column_name = 'COMPONENT_ID' AND a.table_name = 'WIDGET' )