我試圖用JDBC元數據檢索給定表的FK。爲此,我使用「getImportedKeys」函數。JDBC檢索外鍵列名稱(sybase ase)
對於我的表「cash_mgt_strategy」,它給了ResultSet中:
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工作區),其中顯示了表的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」...但它給出了完全相同的結果/問題。 – Alexxx
好的,所以我檢查了getMaxColumnNameLength();這是30.但奇怪的是,當我用「getColumns()」函數檢索我的表的列時,我已經成功檢索了全名「fx_est_execution_strategy_policy_id」。這裏檢索的名字是'fx_est_execution_strategy_policy',它是33字符長度,不是30. – Alexxx