我需要从约束名称中获取有关表名和列名的信息。
存在类似于connection.getMetadata()。getX的人来检索约束信息吗?
我的测试用例是在Oracle数据库中,但我想用jdbc解决的最佳解决方案
答案 0 :(得分:7)
如果您正在谈论外键和主键约束。 DatabaseMetaData
确实提供了检索此信息的方法:您可以将getImportedKeys(..)
和getCrossReference(..)
用于外键,将getPrimaryKeys(..)
和getExportedKeys(..)
用于主键。
请注意如何使用它们:getCrossReference(..)
和getExportedKeys
在我看来有点违反直觉。
如果您还需要唯一约束,那么您应该能够getIndexInfo(..)
使用true
传递参数unique
。
答案 1 :(得分:3)
您可以从USER_CONSTRAINTS
和ALL_CONSTRAINTS
表中获取已定义的约束信息
您需要传递必需的where子句字段。
示例:
select
CONSTRAINT_NAME,
CONSTRAINT_TYPE,
TABLE_NAME,
...
from
USER_CONSTRAINTS
where
CONSTRAINT_NAME like concat(?, '%');