java - 如何检测列是否是计算列

标签 java sql-server-2000 calculated-columns

我正在使用 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 获取信息。

我知道我可以查询系统列,但我想避免它。

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)

最佳答案

查询syscolumns其中包含一个 iscompulated 列。

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'

关于java - 如何检测列是否是计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7601448/

相关文章:

sql - 分配具有不同记录的变量

SQL 代理作业,如何记录

Mysql 计算 UPDATE 上的 Timediff

java - 声明 String 和将其声明为 final 有什么区别?

java - 将本地文件传递到 Java 中的 URL

java - 如何使用 java 8 lambda 创建内部成员列表?

sql-server - 将多行合并为一行

python - 对每对字段执行计算

r - 根据 R 中数据集的名称创建一个新变量

java - Spring Config Server 是否有可能从自身获取配置?