2013-05-12 28 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