0

我在下面的 sql server 管理中尝试了一个查询。

alter table add column amount2

update table set amount2=amount

我得到未找到列 amount2。

谁能告诉我为什么会出现这个错误?

4

3 回答 3

5

这不是有效的语法(缺少表名和列数据类型),但在管理工作室中,GO在将列添加到现有表和引用新列的语句之间使用批处理分隔符。

或者,您可以使用EXEC在子批处理中执行它。

SQL Server 在执行前尝试编译批处理中的所有语句,当遇到使用此列的语句时,这将失败。

于 2013-09-21T17:05:33.283 回答
1

这里有几件事不对劲。

  1. 添加列的正确语法是MSDN - ALTER TABLE

    ALTER TABLE [TableName] ADD [ColumnNAME] [DataType]
    
  2. 'Table' 是 SQL Server 中的保留关键字,尽管可以有一个名为 'Table' 的表。引用时需要包含括号。

    SELECT * FROM [Table]
    

总之,你需要

ALTER TABLE [Table] ADD [Amount2] INT
GO -- See Martin's answer for reason why 'GO' is needed here

UPDATE [Table] SET [Amount2]  = [Amount]
于 2013-09-21T18:40:35.820 回答
1

你可以像这样解决这个问题:

-- 更改表格并添加新列“NewColumn”

ALTER TABLE [MyTable] ADD [NewColumn] CHAR(1) NULL;

-- 设置NewColumn的值

EXEC ('UPDATE [MyTable] SET [NewColumn] = ''A'' ');

于 2016-05-19T05:28:19.883 回答