加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

database – 如何从Oracle视图中发现基础主(或唯一)键列

发布时间:2020-12-12 13:51:21 所属栏目:百科 来源:网络整理
导读:我想知道是否有可能发现Oracle视图中涉及的所有表的基础主(或唯一)键列.这是一个显示我的意思的例子: CREATE TABLE t_a ( id number(7),primary key(id));CREATE VIEW v_a ASSELECT * FROM t_a; 因此,通过命名约定,我知道v_a.id实际上是底层t_a表的主键列.
我想知道是否有可能发现Oracle视图中涉及的所有表的基础主(或唯一)键列.这是一个显示我的意思的例子:
CREATE TABLE t_a (
  id number(7),primary key(id)
);

CREATE VIEW v_a AS
SELECT * FROM t_a;

因此,通过命名约定,我知道v_a.id实际上是底层t_a表的主键列.有没有办法使用系统视图正式发现这些信息,如SYS.ALL_CONSTRAINTS,SYS.USER_CONSTRAINTS等?

N.B:

>约束不在视图上,而是在基础表上.
>我对密钥本身不感兴趣,但是在视图的列中.

您可以通过user_dependencies视图找到该信息:
SQL> CREATE TABLE t_a
  2  (   id number(7)
  3,primary key(id)
  4  )
  5  /

Table created.

SQL> CREATE VIEW v_a AS SELECT * FROM t_a
  2  /

View created.

SQL> select c.constraint_name
  2    from user_dependencies d
  3,all_constraints c
  4   where d.name = 'V_A'
  5     and d.referenced_type = 'TABLE'
  6     and d.referenced_link_name is null
  7     and d.referenced_owner = c.owner
  8     and d.referenced_name = c.table_name
  9     and c.constraint_type = 'P'
 10  /

CONSTRAINT_NAME
------------------------------
SYS_C0051559

1 row selected.

问候,
抢.

编辑:对于可能的视图列名称,您可以使用此查询.请注意,您无法保证视图中存在此类列.

SQL> select c.constraint_name
  2,'V_' || substr(c.table_name,3) || '.' || cc.column_name possible_view_column
  3    from user_dependencies d
  4,all_constraints c
  5,all_cons_columns cc
  6   where d.name = 'V_A'
  7     and d.referenced_type = 'TABLE'
  8     and d.referenced_link_name is null
  9     and d.referenced_owner = c.owner
 10     and d.referenced_name = c.table_name
 11     and c.constraint_type = 'P'
 12     and c.owner = cc.owner
 13     and c.constraint_name = cc.constraint_name
 14  /

CONSTRAINT_NAME                POSSIBLE_VIEW_COLUMN
------------------------------ -------------------------------------------------------------
SYS_C0051561                   V_A.ID

1 row selected.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读