2013-05-12 72 views
0

我有一个包含以下表EMP,DEPT,CLIENT和PURCHASE的数据库。我使用Oracle 11g Express版查找在oracle中的多个表上实施的约束

我已经执行下面的SQL语句,找出上表约束:EMP

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'EMP' 

有没有办法找出什么约束,目前已在多个这种数据库实施表在一个声明?

E.g. EMP和客户等等。

+1

认真吗?这是一个令人惊讶的微不足道的SQL语法。使用'OR'(而不是'AND'):http://docs.oracle.com/cd/E11882_01/server.112/e26088/conditions004.htm#sthref1935。或者'IN' http://docs.oracle.com/cd/E11882_01/server.112/e26088/conditions013.htm#i1050801 – APC 2013-05-12 15:04:30

+0

是的,我刚刚开始...对不起,我不如你 – Jim 2013-05-12 23:51:36

+0

也有趣的是,你有点粗鲁,仍然不能给出任何建设性的信息,因为这些工作都没有 – Jim 2013-05-12 23:55:45

回答

1

你可以尝试像

SELECT * 
    FROM USER_CONSTRAINTS 
    ORDER BY TABLE_NAME, 
      CONSTRAINT_NAME 

,这将让你通过数据库中的所有限制浏览。如果你有表的子集你有兴趣,你可以在WHERE子句中折腾如

SELECT * 
    FROM USER_CONSTRAINTS 
    WHERE TABLE_NAME IN ('EMP', 
         'CLIENT', 
         'OTHER_TABLE', 
         'OTHER_TABLE2', 
         'YET_ANOTHER_TABLE') 
    ORDER BY TABLE_NAME, 
      CONSTRAINT_NAME 

... 
    WHERE TABLE_NAME = 'EMP' OR 
     TABLE_NAME = 'CLIENT' OR 
     TABLE_NAME = 'OTHER_TABLE' OR 
     TABLE_NAME = 'OTHER_TABLE2' OR 
     TABLE_NAME = 'YET_ANOTHER_TABLE' 
    ... 

两个WHERE上述条款是等价的 - 第一个就是更紧凑一点。

分享和享受。

+0

非常感谢 – Jim 2013-05-13 02:39:49