我的作业有问题。我相信我的代码都已正确完成,但我一直收到一个语法错误,说该列" Total"不存在。我的印象是当你使用" AS"它重命名了您要使用的列。
这是我的代码,任何指针都将非常感激。
Use [IST278EagleCorp13-1]
Go
Alter Trigger DPInvOrderTrigger
On InventoryPart
For insert
As
If exists ( Select Count(ReorderLevel * 4) ReorderLevel,Count(StockOnOrder + StockLevel) AS Total
From InventoryPart
Where Total > ReorderLevel)
Begin
RaisError('Inventory to low. Transaction failed.',16,1)
rollback tran
End
这些是此作业的指示。
/* Create a FOR|AFTER trigger named xxInvOrderTrigger for updates
to the InventoryPart table. If an update produces a record where
the (stockOnOrder + stockLevel) > (4 * reorderLevel) raise an
error (display an error) and rollback the change. */
答案 0 :(得分:0)
据我了解,您使用的是SQL Server
作为您的RDBMS,如果我在下面的查询中没有错误Total
是列别名,则您无法使用column alias
where
条款。这就是错误的原因。
请参阅此处的示例小提示,以便您理解http://sqlfiddle.com/#!3/f902c/1
Select Count(ReorderLevel * 4) ReorderLevel,
Count(StockOnOrder + StockLevel) AS Total
相反,你可以使用下面的派生表
来做到这一点select ReorderLevel,
Total
from
(
Select Count(ReorderLevel * 4) ReorderLevel,
Count(StockOnOrder + StockLevel) AS Total,
ReorderLevel
From InventoryPart
) tab
Where Total > ReorderLevel