0
我正在使用Java代碼使用DB2表並使用ResultSetMetaData獲取表的元數據。無論如何要知道表是否生成了列,如果有,有沒有辦法可以找出用於它的公式。DB2:從Java查找生成的列
只要有可能通過Java代碼,使用ResultSetMetaData或使用任何其他方法都可以。
Mehul
我正在使用Java代碼使用DB2表並使用ResultSetMetaData獲取表的元數據。無論如何要知道表是否生成了列,如果有,有沒有辦法可以找出用於它的公式。DB2:從Java查找生成的列
只要有可能通過Java代碼,使用ResultSetMetaData或使用任何其他方法都可以。
Mehul
使用系統目錄。在Java中以ResultSet打開以下內容
SELECT colname
FROM SysCat.Columns
WHERE tabname = ?
AND tabschema = ?
AND identity = 'Y'
如果ResultSet爲空,則表中沒有GENERATED列。否則,您可以從上述查詢的輸出中確定哪個列名是GENERATED。
如果您正在查找將爲IDENTITY列的下一個值「預先生成」的公式,則無法做到這一點,至少在數據庫很熱時不會這樣做。
感謝您的答覆..這真的有幫助。關於公式,你說,當數據庫很熱時,我無法訪問,但邏輯上,該公式必須存儲在某個位置,以便數據庫預先生成值,所以與其他元數據一樣,我也必須能夠訪問該公式。這是我的假設。糾正我,如果我錯了。 – Mehul 2012-07-29 05:27:47
我的意思是,當數據庫很熱時,您無法獲得即將分配給GENERATED列的值。你當然可以使用上面的SQL發現哪些列是IDENTITY列。您可以得到最接近的是SysCat.Sequences.start,但是當數據庫很熱時,該數字通常會高於分配給IDENTITY列的下一個數字。證明這是太長的餘量 –
user980717
2012-07-30 14:54:51
謝謝..我會嘗試。 – Mehul 2012-07-31 16:33:15