2011-09-29 2 views
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를 쿼리 할 수 ​​있지만 필자는이를 피하고 싶습니다. iscomputed 열을 포함

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)

답변

1
syscolumns

쿼리.

SELECT o.name as TableName, c.name as ComputedColumnName 
    FROM sysobjects o 
     INNER JOIN syscolumns c 
      ON o.id = c.id 
       AND c.iscomputed = 1 
    WHERE o.xtype = 'u' 
+0

내가 그 해결책을 보았다 "iscomputed = 1 dbo.syscolumns SELECT * FROM"하지만, 또 다른 쿼리를 작성하지 않고 DatabaseMetaData의에서 또는 ResultSetMetaData에에서 정보를 얻을 수있는 방법이 있다면 내가 알고 싶어 그. – pablosaraiva

+0

다른 답변이 게시되지 않았기 때문에 귀하를 유일한 방법으로 받아 들일 것입니다. 그러나, 내 프로그램에서, 나는 RecordSetMetaData에서 isReadOnly 메서드를 사용하여 끝났다. – pablosaraiva