ORACLE同义词表描述约束

时间:2014-09-22 14:27:54

标签: sql oracle constraints sqlplus synonym

我希望看到在表的同义词中定义的约束。

当一个类型

SQL> DESCRIBE table_name;

它只显示每列的编号,非空标志和大小。我如何知道每列的所有约束?我怎么能知道同义词是公共的还是私人的?

谢谢, 阿尔瓦罗。


随着@Aramillo帮助并使其适应我的需求,我想出了如何做到这一点。我希望看到为表定义的约束,但不是根据USER定义的约束。有两个选项,ALL_CONSTRAINTSALL_CONS_COLUMNS

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

查询:

SELECT * FROM all_cons_columns WHERE table_name = 'table_name';

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

  

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

所以我猜如果它显示数据同义词是公共的,或者你是私人同义词的正确用户。

2 个答案:

答案 0 :(得分:2)

此查询为您提供当前用户名称为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。 我希望这有帮助。

答案 1 :(得分:0)

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

用它来解决 DBA_CONSTRAINTS USER_CONSTRAINTS 要么 DBA_CONS_COLUMNS USER_CONS_COLUMNS

stack link for Oracle