SQL Server在尝试引用已存在表中新创建的列时引发错误
当尝试引用/访问新添加的列到现有(或不存在?)表时,我总是遇到编辑器错误和大多数时间的执行错误(most!=ALYST,这甚至更奇怪) 考虑以下几点:SQL Server在尝试引用已存在表中新创建的列时引发错误,sql,sql-server,Sql,Sql Server,当尝试引用/访问新添加的列到现有(或不存在?)表时,我总是遇到编辑器错误和大多数时间的执行错误(most!=ALYST,这甚至更奇怪) 考虑以下几点: ALTER TABLE Products ADD TotalSales INT NOT NULL CONSTRAINT Def DEFAULT 0 UPDATE P SET P.TotalSales = TEMP.TotalSalesComputed FROM Products P JOIN (SELECT Product
ALTER TABLE Products
ADD TotalSales INT NOT NULL
CONSTRAINT Def DEFAULT 0
UPDATE P
SET P.TotalSales = TEMP.TotalSalesComputed
FROM Products P
JOIN
(SELECT ProductID, SUM(OD.Quantity) TotalSalesComputed
FROM [Order Details] OD
GROUP BY ProductID) TEMP ON P.ProductID = TEMP.ProductID
现在,编辑说:
列名称“TotalSales”无效
执行时:
味精207,16级,状态1,第151行列名称“TotalSales”无效 这是一样的 更糟糕的是,即使我在编辑器中出现了错误——有时(现在是随机的)查询是成功的(它做了它应该做的) 我尝试了IntelliSense的缓存清除,然后是一些EXEC的东西,读了一些关于类似问题的文章,但什么都没有 人们在运行SQL Server脚本并有效地检测“无效列”错误而不是实际触发查询之前,会说一些关于SQL Server编译脚本的内容 是否有一些命令(如EXEC one)可以确保触发此查询?(我不在乎编辑错误)。只要把 去 进入两个查询 Go是一个批次的结束信号 因此,您的查询将如下所示
ALTER TABLE Products ADD TotalSales INT NOT NULL CONSTRAINT Def DEFAULT 0
Go -- added
UPDATE P
SET P.TotalSales = TEMP.TotalSalesComputed
FROM Products P
JOIN
(
SELECT ProductID, SUM(OD.Quantity) TotalSalesComputed
FROM [Order Details] OD
GROUP BY ProductID
) TEMP
ON P.ProductID = TEMP.ProductID
参考资料:刚刚发布
去
进入两个查询
Go是一个批次的结束信号
因此,您的查询将如下所示
ALTER TABLE Products ADD TotalSales INT NOT NULL CONSTRAINT Def DEFAULT 0
Go -- added
UPDATE P
SET P.TotalSales = TEMP.TotalSalesComputed
FROM Products P
JOIN
(
SELECT ProductID, SUM(OD.Quantity) TotalSalesComputed
FROM [Order Details] OD
GROUP BY ProductID
) TEMP
ON P.ProductID = TEMP.ProductID
引用:您是否尝试在alter语句后插入GO?批处理是根据现有表定义编译的。如果在同一批中引用新列,将出现错误。是否尝试在alter语句后插入GO?该批是根据现有表定义编译的。如果在同一批中引用新列,则会出现错误。