Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server在尝试引用已存在表中新创建的列时引发错误_Sql_Sql Server - Fatal编程技术网

SQL Server在尝试引用已存在表中新创建的列时引发错误

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

当尝试引用/访问新添加的列到现有(或不存在?)表时,我总是遇到编辑器错误和大多数时间的执行错误(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 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?该批是根据现有表定义编译的。如果在同一批中引用新列,则会出现错误。