我需要从约束的名称有关表和列名的信息。
有人存在类似connection.getMetadata()的getX检索约束信息?
我的测试案例是Oracle数据库,但我的最好的解决方案我只是想用JDBC来解决
我需要从约束的名称有关表和列名的信息。
有人存在类似connection.getMetadata()的getX检索约束信息?
我的测试案例是Oracle数据库,但我的最好的解决方案我只是想用JDBC来解决
如果你正在谈论的外键和主键约束。 该DatabaseMetaData
确实提供了获取信息的方法:你可以使用getImportedKeys(..)
和getCrossReference(..)
为外键和getPrimaryKeys(..)
和getExportedKeys(..)
主键。
:你如何使用它们只是要小心getCrossReference(..)
和getExportedKeys
都有点反直觉在我看来。
如果您还需要唯一约束,那么你应该能够使用getIndexInfo(..)
与传递true
的参数unique
。
你可以得到定义的约束,从信息USER_CONSTRAINTS
和ALL_CONSTRAINTS
表。
你需要传递所需的where子句中的字段。
例如 :
select
CONSTRAINT_NAME,
CONSTRAINT_TYPE,
TABLE_NAME,
...
from
USER_CONSTRAINTS
where
CONSTRAINT_NAME like concat(?, '%');