2012-07-27 21 views
0

我正在使用Java代碼使用DB2表並使用ResultSetMetaData獲取表的元數據。無論如何要知道表是否生成了列,如果有,有沒有辦法可以找出用於它的公式。DB2:從Java查找生成的列

只要有可能通過Java代碼,使用ResultSetMetaData或使用任何其他方法都可以。

Mehul

回答

0

使用系統目錄。在Java中以ResultSet打開以下內容

SELECT colname 
     FROM SysCat.Columns 
     WHERE tabname = ? 
     AND tabschema = ? 
     AND identity = 'Y' 

如果ResultSet爲空,則表中沒有GENERATED列。否則,您可以從上述查詢的輸出中確定哪個列名是GENERATED。

如果您正在查找將爲IDENTITY列的下一個值「預先生成」的公式,則無法做到這一點,至少在數據庫很熱時不會這樣做。

+0

感謝您的答覆..這真的有幫助。關於公式,你說,當數據庫很熱時,我無法訪問,但邏輯上,該公式必須存儲在某個位置,以便數據庫預先生成值,所以與其他元數據一樣,我也必須能夠訪問該公式。這是我的假設。糾正我,如果我錯了。 – Mehul 2012-07-29 05:27:47

+0

我的意思是,當數據庫很熱時,您無法獲得即將分配給GENERATED列的值。你當然可以使用上面的SQL發現哪些列是IDENTITY列。您可以得到最接近的是SysCat.Sequences.start,但是當數據庫很熱時,該數字通常會高於分配給IDENTITY列的下一個數字。證明這是太長的餘量 user980717 2012-07-30 14:54:51

+0

謝謝..我會嘗試。 – Mehul 2012-07-31 16:33:15