0
我正在使用SQL Server 2000和Java。如何檢測列是否爲計算列
我正在創建一個應用程序,其中包括從表中讀取元數據,在另一臺服務器上重新創建它們並傳輸數據。
其中一個表的創建是這樣的:
CREATE TABLE some_table (
Date datetime NOT NULL,
Code int NOT NULL,
SameCodeAgainWTF AS Code
)
我如何檢測到「SameCodeAgainWTF」列是一個計算列,所以我不嘗試在數據中插入它的值遷移階段?
我已經從連接中獲得了DatabaseMetaData對象。但是我找不到能夠提供這些信息的方法。
...
DatabaseMetaData dbMetaData = connection.getMetaData();
...
在此先感謝。
編輯1:
我想知道是否有沒有再次進行查詢的解決方案。如果有辦法從DatabaseMetaData或ResultSetMetaData獲取信息。
我知道我可以查詢syscolumns,但我想避免它。
SELECT
sysobjects.name AS TableName,
syscolumns.name AS ColumnName
FROM syscolumns
INNER JOIN sysobjects
ON syscolumns.id = sysobjects.id
AND sysobjects.xtype = 'U' --User Tables
WHERE syscolumns.iscomputed = 1
From: Get List of Computed Columns in Database Table (SQL Server)
「SELECT * FROM dbo.syscolumns WHERE iscomputed = 1」我看到了解決方案,但我想知道是否有一種方式來獲得從DatabaseMetaData的或從ResultSetMetaData的信息,而無需編寫另一個查詢那。 – pablosaraiva
由於沒有其他答案發布,我會接受你的唯一方法。但是,在我的程序中,我最終使用了RecordSetMetaData中的isReadOnly方法。 – pablosaraiva