我在下面的 sql server 管理中尝试了一个查询。
alter table add column amount2
update table set amount2=amount
我得到未找到列 amount2。
谁能告诉我为什么会出现这个错误?
我在下面的 sql server 管理中尝试了一个查询。
alter table add column amount2
update table set amount2=amount
我得到未找到列 amount2。
谁能告诉我为什么会出现这个错误?
这不是有效的语法(缺少表名和列数据类型),但在管理工作室中,GO
在将列添加到现有表和引用新列的语句之间使用批处理分隔符。
或者,您可以使用EXEC
在子批处理中执行它。
SQL Server 在执行前尝试编译批处理中的所有语句,当遇到使用此列的语句时,这将失败。
这里有几件事不对劲。
添加列的正确语法是MSDN - ALTER TABLE
ALTER TABLE [TableName] ADD [ColumnNAME] [DataType]
'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]
你可以像这样解决这个问题:
-- 更改表格并添加新列“NewColumn”
ALTER TABLE [MyTable] ADD [NewColumn] CHAR(1) NULL;
-- 设置NewColumn的值
EXEC ('UPDATE [MyTable] SET [NewColumn] = ''A'' ');