嘿,所以我有这个触发器:
CREATE TRIGGER [dbo].[atbl_Sales_OrdersLines_ITrigGG]
ON [dbo].[atbl_Sales_OrdersLines]
FOR INSERT
AS
BEGIN
IF (exists (select 1 from (
select x.ProductId, totalOrdersQty, ISNULL(asp.Quantity, 0) PossibleQty from (
select i.ProductId, sum(aso.Amount) totalOrdersQty
from (select distinct ProductId from inserted) i
join atbl_Sales_OrdersLines aso on aso.ProductId = i.ProductId
group by i.ProductId) x
left join atbl_Sales_ProductS asp on asp.ProductId = x.ProductId
) x
where PossibleQty < totalOrdersQty))
BEGIN
RAISERROR ('Quantity is not sufficient' ,10,1)
ROLLBACK TRANSACTION
END
END
触发器有效。当我尝试插入时 - 它会在 SQL 服务器管理器中显示错误消息。但是,在Visual Basic应用程序中,我也会收到错误,但是该消息未显示在弹出窗口中。
另一件事,关于如何在该消息中显示产品名称的任何想法(缺少数量(。
谢谢。
您需要在 Visual Basic 中捕获 SQL 错误内部异常,并将其显示在弹出窗口中。
若要显示产品的名称,可以使用SELECT 1 FROM (...
查询中的子查询,并将 ProductName 添加到选择列表以填充变量,然后在 RAISERROR 字符串中使用该变量。 但是,如果有多个产品缺少数量,则需要决定要做什么。
尝试将插入的执行封装在 APP 中try...catch
结构中,您将能够显示消息