7

我需要来自约束名称的有关表名和列名的信息。

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

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

4

2 回答 2

8

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

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

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

于 2012-07-16T17:30:37.687 回答
5

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

示例

select 
    CONSTRAINT_NAME,
    CONSTRAINT_TYPE,
    TABLE_NAME,
    ...
from
    USER_CONSTRAINTS
where
    CONSTRAINT_NAME like concat(?, '%');
于 2012-07-15T18:46:03.013 回答