【问题标题】:ORACLE synonym table describe constraintsORACLE 同义词表描述约束
【发布时间】:2014-11-16 13:32:27
【问题描述】:

我想查看在表的同义词中定义的约束。

当一个类型

SQL> DESCRIBE table_name;

它只显示每列的数量、非空标志和大小。我怎样才能知道每列的所有约束?我怎样才能知道同义词是公共的还是私有的?

谢谢, 阿尔瓦罗。


解决方案

有了@Aramillo 的帮助并根据我的需要调整它,我想出了如何去做。我想查看为表定义的约束,但不是根据 USER。有两个选项,ALL_CONSTRAINTSALL_CONS_COLUMNS

ALL_CONSTRAINTS 没有列 COLUMN_NAME 以便知道约束设置为的列名称。 [ALL_CONS_COLUMNS] 有。

查询:

SELECT * FROM all_cons_columns WHERE table_name = 'table_name';

关于私有或公共同义词,如上面的链接所说,

ALL_CONSTRAINTS/ALL_CONS_COLUMNS 描述了当前用户可访问的表的约束定义。

所以我猜它是否显示同义词是公开的数据,或者您是私有同义词的正确用户。

【问题讨论】:

    标签: sql oracle constraints sqlplus synonym


    【解决方案1】:

    此查询为您提供当前用户名称为 REGION_SYN_P 的同义词的所有约束:

    SELECT constraint_name,
           c.table_name,
           synonym_name,
           S.OWNER
      FROM user_constraints C, all_SYNONYMS S
     WHERE     C.TABLE_NAME = S.TABLE_NAME
           AND S.TABLE_OWNER = C.OWNER
           AND S.Synonym_name = 'REGION_SYN_P'
    

    如果您想知道是否公开,您只需检查所有者列,如果它是公开的同义词,则所有者将为 PUBLIC

    如果您需要查询其他模式中的约束,您可以使用all_constraints 而不是user_constraints。 我希望这有帮助。

    【讨论】:

      【解决方案2】:

      以下内容适用于 Oracle。 查询所谓的静态数据字典: oracle constrains

      解决问题 DBA_CONSTRAINTS USER_CONSTRAINTS 要么 DBA_CONS_COLUMNS USER_CONS_COLUMNS

      stack link for Oracle

      【讨论】:

      • Oracle 中没有information_schema。并且没有use 声明。
      • 当我像@a_horse_with_no_name 所说的那样输入INFORMATION_SCHEMA:SQL> use INFORMATION_SCHEMA; unknown command beginning "use INFORM..." - rest of line ignored. 时,Oracle 中似乎没有这样的表(use 语句都没有)
      • 而不是 use 与 Oracle 一起使用什么?
      • 单击我提供的链接(oracle 约束),但您必须了解相当于 information_schema 的数据字典
      • -1 在标记为 Oracle 的问题中没有删除 MySQL 特定代码
      猜你喜欢
      • 2014-04-17
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多