【发布时间】:2017-07-03 08:42:11
【问题描述】:
我正在尝试使用 JDBC 元数据检索给定表的 FK。 为此,我使用了“getImportedKeys”函数。
对于我的表'cash_mgt_strategy',它在结果集中给出:
PKTABLE_CAT : 'HAWK'
PKTABLE_SCHEM : 'dbo'
PKTABLE_NAME : 'fx_execution_strategy_policy'
PKCOLUMN_NAME : 'fx_execution_strategy_policy_id'
FKTABLE_CAT : 'HAWK'
FKTABLE_SCHEM : 'dbo'
FKTABLE_NAME : 'cash_mgt_strategy'
FKCOLUMN_NAME : 'fx_est_execution_strategy_policy'
KEY_SEQ : '1'
UPDATE_RULE : '1'
DELETE_RULE : '1'
FK_NAME : 'fk_fx_est_execution_strategy_policy'
PK_NAME : 'cash_mgt_s_1283127861'
DEFERRABILITY : '7'
问题是“FKCOLUMN_NAME : 'fx_est_execution_strategy_policy'”不是我表的真实列,但它似乎被截断了? (末尾缺少“_id”)
使用官方 Sybase sql 客户端(Sybase Workspace)时,显示该约束/外键给出的表的 DDL:
ALTER TABLE dbo.cash_mgt_strategy ADD CONSTRAINT fk_fx_est_execution_strategy_policy FOREIGN KEY (fx_est_execution_strategy_policy_id)
REFERENCES HAWK.dbo.fx_execution_strategy_policy (fx_execution_strategy_policy_id)
所以我想知道如何检索完整的 FKCOLUMN_NAME ?
请注意,我使用的是 jconnect 6.0。 我用 jconnect 7.0 测试过,同样的问题。
谢谢
【问题讨论】:
-
请注意,我已经通过在 PK 表上使用“getExportedKeys”测试了对称方式......但它给出了完全相同的结果/问题。
-
好的,所以我检查了 getMaxColumnNameLength();这是 30。但真正奇怪的是,当我使用“getColumns()”函数检索表的列时,我成功地检索了整个名称“fx_est_execution_strategy_policy_id”。这里检索到的名称是 'fx_est_execution_strategy_policy',它是 33 字符长度,而不是 30。
标签: jdbc foreign-keys sap-ase