我的库存需要限制。我应该确保我的主仓库的库存数量永远不会超过1000。所有多余的单元都被发送到外部存储站点并单独跟踪。我需要为" ProductInventory"写一个触发器。表格,以确保有更新时库存不能超过1000个单位。
CREATE TRIGGER tgrExcessInventory
ON production.productinventory
更新后
AS
BEGIN
(这是我在sql语句中迷失的地方,我需要做的是确保不超过我的限制。)
我需要哪种语言才能将此触发上限设为1000?
答案 0 :(得分:2)
可能有点晚了,但试试这个:
CREATE TRIGGER tgrExcessInventory
on Production.ProductInventory
FOR UPDATE
AS
IF EXISTS
(SELECT 'True'
FROM Inserted i
JOIN Deleted d
ON i.productID = d.ProductID
AND i.locationID = d.LocationID
WHERE (d.quantity + i.quantity) >= 1000 OR
i.quantity >=1000
)
BEGIN
RAISERROR('Cannot increase stock where units would be over 1,000 units',16,1)
ROLLBACK TRAN
END

此处的代码将触发触发器,如果有一个场景,您可以看到设置数量=数量+任何值将使其达到1000或更多,并且还在那里触发&#39;直接设置数量= 1000+ < / p>
答案 1 :(得分:0)
就检查库存数量而言,您可以对表格进行简单计算。
IF (SELECT COUNT(1) FROM production.productinventory) >= 1000
BEGIN
//Do your thing
END
您应该查看This问题以获得更多答案。不幸的是,MSSQL不支持Gordon Linoff在评论中提到的“ BEFORE UPDATE ”,但您可以轻松使用 DELETED 和 INSERTED 表格。触发。
我希望它有所帮助!干杯!