查找在oracle中跨多个表强制执行的约束

时间:2013-05-12 09:36:06

标签: oracle constraints database

我有一个包含以下表格EMP,DEPT,CLIENT和PURCHASE的数据库。我使用的是Oracle 11g快递版

我已经执行了以下SQL语句来查找表上的约束:EMP

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'EMP'

有没有办法找出目前在一个语句中跨多个表对此数据​​库强制执行哪些约束?

E.g。 EMP和客户等等。

1 个答案:

答案 0 :(得分: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子句是等价的 - 第一个是更紧凑的。

分享并享受。