下午好,我在课堂上理解这个问题时遇到了一些困难。这个作业的目的是通过触发器添加数据输入的参数,触发器在满足特定条件时启动。
由于仓储的限制,超过800个单位的存货需要送到外部储存地点,并单独跟踪。您已被要求监视更新何时将超过此边界,以便在生产会议上处理它。为production.productinventory表编写一个名为“tgrexcessinentory”的触发器,以确保数量永远不能超过800个单位。这是第一步。修改在步骤1中创建的触发器,使其仅在数量列更新时执行其检查代码。我成功地创建了触发器,但在理解如何修改它时遇到了问题?这就是我目前所拥有的。我在这里看到过一些类似于这个问题的帖子,但是我没有看到任何修改过的帖子。我觉得我少了一些小东西。根据我的理解,我需要写一个alter语句吗?
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) >= 800 OR
i.quantity >=800
)Begin
RAISERROR('Cant increase supply where units would be over 800
units',16,1)
ROLLBACK TRAN
END
然后我做了alter函数
ALTER TRIGGER [Production].[tgrExcessInventory]
on [Production].[ProductInventory]
FOR UPDATE
AS
IF EXISTS
(SELECT 'True'
FROM Inserted I
JOIN Deleted D
ON i.Quantity = d.quantity
AND i.Quantity = d.Quantity
WHERE (d.quantity + i.quantity) >= 800 OR
i.quantity >=800
)Begin
RAISERROR('Cant increase supply where units would be over 800 units',16,1)
ROLLBACK TRAN
END
好像有用?我相信我做得对任何提示都会很感激谢谢你的时间
1条答案
按热度按时间sxpgvts31#
如果你在这里读到:https://dba.stackexchange.com/questions/193219/alter-procedure-in-mysql
关于
ALTER PROCEDURE
此语句可用于更改存储过程的特性。一个文件中可以指定多个更改ALTER PROCEDURE
声明。但是,不能使用此语句更改存储过程的参数或主体;要进行此类更改,必须使用删除并重新创建过程DROP PROCEDURE
以及CREATE PROCEDURE
.如果过程是一个小的更改,那么可以使用alter语句轻松地更改它。如果你想做出更大的改变,你应该使用
SHOW CREATE PROCEDURE tgrExcessInventory
然后进行更改,删除现有过程DROP PROCEDURE IF EXIST tgrExcessInventory
运行CREATE PROCEDURE
您的更改声明