下午好,我在尝试理解课堂上的这个问题时遇到了一些麻烦。此作业的目的是通过满足特定条件时启动的触发器在数据输入周围添加参数。
由于仓储限制,需要将超过800个单位的库存发送到外部存储站点并分别进行跟踪。已要求您监视更新何时会超出此边界,以便可以在生产会议中解决。 为Production.ProductInventory表编写一个标题为“ tgrExcessInventory”的触发器,以确保数量不能超过800个单位。这是第一步。 修改步骤1中创建的触发器,以仅在“数量”列已更新时执行其检查代码。我成功创建了触发器,但是在了解如何修改触发器时遇到了麻烦。到目前为止,这就是我所拥有的。我在这里还看到了其他一些与此问题类似的帖子,但是对它所做的修改却没有看到。我觉得这有点小失踪。据我了解,我需要写一条变更声明吗?
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
似乎可以工作?我相信我做对了,谢谢您的宝贵时间
答案 0 :(得分:0)
如果您在此处阅读: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
语句