JDBC元数据检索约束信息

时间:2012-07-15 18:36:19

标签: oracle jdbc metadata

我需要从约束名称中获取有关表名和列名的信息。

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

我的测试用例是在Oracle数据库中,但我想用jdbc解决的最佳解决方案

2 个答案:

答案 0 :(得分:7)

如果您正在谈论外键和主键约束。 DatabaseMetaData确实提供了检索此信息的方法:您可以将getImportedKeys(..)getCrossReference(..)用于外键,将getPrimaryKeys(..)getExportedKeys(..)用于主键。

请注意如何使用它们:getCrossReference(..)getExportedKeys在我看来有点违反直觉。

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

答案 1 :(得分:3)

您可以从USER_CONSTRAINTSALL_CONSTRAINTS表中获取已定义的约束信息 您需要传递必需的where子句字段。

示例

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