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