如何知道外键在Oracle SQL Developer中引用到哪些列?

萨米

我可以检查外键中正在引用的列,但是我如何知道该外键在另一个表中引用的列呢?既然如此,它不必是表的主键。有没有一种简单的方法可以在Oracle SQL Developer上执行此操作而不执行任何查询?

拉利特·库马尔(Lalit Kumar B)

您可以加入user_cons_columnsuser_constraints视图以获取主键和外键引用的元数据信息。

例如,

SQL> COLUMN table_name format a10
SQL> COLUMN column_name format a11
SQL> COLUMN constraint_name format a20
SQL> COLUMN owner format a10
SQL> COLUMN ref_table_name format a15
SQL> COLUMN ref_pk format a10
SQL> SELECT a.table_name,
  2    a.column_name,
  3    a.constraint_name,
  4    b.owner,
  5    c_pk.table_name ref_table_name,
  6    c_pk.constraint_name ref_pk
  7  FROM user_cons_columns a
  8  JOIN user_constraints b
  9  ON a.owner            = b.owner
 10  AND a.constraint_name = b.constraint_name
 11  JOIN user_constraints c_pk
 12  ON b.r_owner            = c_pk.owner
 13  AND b.r_constraint_name = c_pk.constraint_name
 14  WHERE b.constraint_type = 'R';

TABLE_NAME COLUMN_NAME CONSTRAINT_NAME      OWNER      REF_TABLE_NAME  REF_PK
---------- ----------- -------------------- ---------- --------------- ----------
EMP        DEPTNO      FK_DEPTNO            SCOTT      DEPT            PK_DEPT

SQL>

您还可以使用DBMS_METADATA.GET_DDL为该表生成DDL。它将具有完整的表信息。

例如,

SQL> set long 200000 pages 0 lines 131
SQL> column txt format a121 word_wrapped
SQL> select dbms_metadata.get_ddl('TABLE', 'EMP') from dual;

  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0),
         CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE,
         CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
          REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何规范化SQL查询的结果以及如何将外键引用到两列

来自分类Dev

如何在Oracle Sql Developer中过滤列

来自分类Dev

Rails如何知道外键是什么属性?

来自分类Dev

我如何通过知道外键来获取记录?

来自分类Dev

sql中的外键:Oracle

来自分类Dev

Oracle SQL Developer-使用外键

来自分类Dev

基于Oracle Sql Developer中列的汇总值的条件排序

来自分类Dev

如何检查SQL中存在哪些列

来自分类Dev

如何在 PL SQL Developer 中修改列以自动递增?

来自分类Dev

有人知道如何进行约束以确保Oracle SQL中存在某些字符吗?

来自分类Dev

我不知道如何在 sql oracle pentaho cde 中删除重复的行

来自分类Dev

如何使用两个匹配项过滤Oracle Sql Developer中的列

来自分类Dev

如何在SQL Developer中获取随机外键?

来自分类Dev

如何在Oracle SQL Developer中运行存储过程?

来自分类Dev

如何在Oracle SQL Developer中永久配置数字格式?

来自分类Dev

如何在Oracle SQL Developer中按值显示分组

来自分类Dev

如何在 Oracle sql developer 中输入行数

来自分类Dev

如何查看哪些SQL列可分组

来自分类Dev

如何知道在SQL中插入记录的日期

来自分类Dev

在Oracle SQL Developer中插入汇总记录

来自分类Dev

Oracle SQL Developer中的脚本变量

来自分类Dev

在Oracle SQL Developer中定义变量

来自分类Dev

Oracle Sql Developer中的参考游标

来自分类Dev

如何在Spark-SQL查询中引用映射列?

来自分类Dev

如何知道在Oracle中授予我哪些表级特权?

来自分类Dev

如何知道哪些会话在 SQL Server 中被杀死

来自分类Dev

没有外键引用的SQL列

来自分类Dev

在Oracle SQL Developer中恢复未保存的SQL查询脚本

来自分类Dev

Oracle SQL Developer中的旧SQL历史记录

Related 相关文章

热门标签

归档