2012-07-15 83 views
4

我需要关于约束名称中表和列名称的信息。JDBC Metada检索约束信息

存在与connection.getMetadata()。getX类似的检索约束信息的人?

我的测试用例是Oracle数据库,但我的最好的解决方案我只是想用JDBC

回答

6

如果你谈论的是外键和主键约束。 DatabaseMetaData确实提供了检索此信息的方法:您可以使用getImportedKeys(..)getCrossReference(..)作为外键,而getPrimaryKeys(..)getExportedKeys(..)作为主键。

只是要小心你如何使用它们:getCrossReference(..)getExportedKeys有点反直觉在我看来。

如果您还需要唯一约束,那么你应该能够使用getIndexInfo(..)与传递true的参数unique

+0

不错,但我需要检索唯一的约束,谢谢, – jrey 2012-07-17 14:31:06

+1

@ jrey.py查看我的答案更新。 – 2012-07-17 17:36:17

+0

@ mark-rottevel非常感谢, – jrey 2012-07-18 15:24:55

3

你可以从USER_CONSTRAINTSALL_CONSTRAINTS表中定义的约束的信息来解决。
您需要传递where子句字段。

select 
    CONSTRAINT_NAME, 
    CONSTRAINT_TYPE, 
    TABLE_NAME, 
    ... 
from 
    USER_CONSTRAINTS 
where 
    CONSTRAINT_NAME like concat(?, '%');