You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle表关联查询咨询:如何查看表空间内表的主键外键关联

查询指定表空间表的外键与关联主键信息

当然可以!要获取final表空间内表的外键及其关联的主键信息,我们可以借助Oracle的数据字典视图来实现,下面是几个实用的查询语句:

1. 基础外键-主键关联关系(表级)

这个查询会列出final表空间中所有表的外键约束,以及对应的主键表和主键约束:

SELECT
    c.owner AS 外键表所有者,
    c.table_name AS 外键表名,
    c.constraint_name AS 外键约束名,
    c.r_owner AS 主键表所有者,
    c.r_table_name AS 主键表名,
    c.r_constraint_name AS 主键约束名
FROM
    all_constraints c
JOIN
    all_tables t ON c.owner = t.owner AND c.table_name = t.table_name
WHERE
    c.constraint_type = 'R'  -- R代表外键约束
    AND t.tablespace_name = 'FINAL'  -- 指定目标表空间
ORDER BY
    c.table_name, c.constraint_name;

2. 字段级详细关联(外键字段对应主键字段)

如果需要看到具体哪些字段是外键,对应主键表的哪些字段,可以用这个查询:

SELECT
    c.owner AS 外键表所有者,
    c.table_name AS 外键表名,
    cc.column_name AS 外键字段名,
    c.r_owner AS 主键表所有者,
    c.r_table_name AS 主键表名,
    rc.column_name AS 主键字段名,
    c.constraint_name AS 外键约束名,
    c.r_constraint_name AS 主键约束名
FROM
    all_constraints c
JOIN
    all_cons_columns cc ON c.owner = cc.owner AND c.constraint_name = cc.constraint_name
JOIN
    all_cons_columns rc ON c.r_owner = rc.owner AND c.r_constraint_name = rc.constraint_name
JOIN
    all_tables t ON c.owner = t.owner AND c.table_name = t.table_name
WHERE
    c.constraint_type = 'R'
    AND t.tablespace_name = 'FINAL'
ORDER BY
    c.table_name, cc.position;

补充说明

  • 如果想要同时包含final表空间作为主键表的关联(即其他表空间的表引用了该表空间的表作为主键),可以调整WHERE条件,把t.tablespace_name = 'FINAL'换成(t.tablespace_name = 'FINAL' OR EXISTS (SELECT 1 FROM all_tables rt WHERE rt.owner = c.r_owner AND rt.table_name = c.r_table_name AND rt.tablespace_name = 'FINAL'))
  • 注意表空间名在Oracle中默认是大小写敏感的,如果你的表空间名是小写,需要调整引号内的内容为小写。

内容的提问来源于stack exchange,提问作者codepurveyor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:17:11