JDBC Metada检索约束信息(JDBC Metada retrieve Constraint

2019-09-19 12:47发布

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

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

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

Answer 1:

如果你正在谈论的外键和主键约束。 该DatabaseMetaData确实提供了获取信息的方法:你可以使用getImportedKeys(..)getCrossReference(..)为外键和getPrimaryKeys(..)getExportedKeys(..)主键。

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

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



Answer 2:

你可以得到定义的约束,从信息USER_CONSTRAINTSALL_CONSTRAINTS表。
你需要传递所需的where子句中的字段。

例如

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


文章来源: JDBC Metada retrieve Constraint information