触发根据已售产品更新产品库存

时间:2013-06-22 20:30:56

标签: sql tsql triggers

我在编写触发器时遇到问题,无法按标题执行操作。理论上我有这个数据库: 我有3张桌子。一个用于销售(待定和结束),一个用于“购物车”,另一个用于存储有关产品的信息,例如库存,价格等等

Sales(
SaleID primary key int,
Cost money,
Status nchar(10)
)

ShopingCart(
ShopingCartID primary key int,
Sale references SaleID (i don't know how to write this on T-SQL),
Product references ProductID (same)
)

Product(
ProductID primary key int,
Name nchar(20),
Price money,
Stock int
)

现在想象一下SaleID 1的促销,购物车中有5个产品(桌子上有5行),2个产品X和3个产品Y.付款完成后,销售状态设置为付费。现在我需要更新库存值以准确可用。我需要一个触发器或某种东西来减去每种产品库存中每种产品的销售量

我的主要问题是如何获得我销售的产品的确切产品ID

我真的不能比这更清楚,因为英语不是我的语言

谢谢是提前

更新

我已经设法改变了我的建议

TRIGGER [dbo].[ShoppingCart_AfterTrigger] ON [dbo].[Venda]
AFTER UPDATE
AS
declare @status nchar(10);
declare @venda int;
select @venda = IDVenda from inserted;
WITH ActualizaStock AS
(
SELECT Produto, COUNT(*) [Total]
FROM LinhaPedido where Venda =@venda
GROUP BY Produto
)
select @status = Estado from inserted

if (@status='Pago')
begin
update Produto 
set Stock = Stock - ActualizaStock.Total
from ActualizaStock
where Produto.IDProduto = ActualizaStock.Produto
end

写入时没有给我任何错误,但是当触发它时会弹出一个错误,指出无效的对象名称'ActualizaStock'。

顺便说一下,现在我的主要语言对此感到抱歉

0 个答案:

没有答案