嘿所以我有这个触发器:
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 Server管理器中显示错误消息。但是,在visual basic app中我也会收到错误,但弹出窗口中不显示该消息。
另一件事,关于如何在该消息中显示产品名称(缺少数量)的任何想法。
感谢。
答案 0 :(得分:0)
您需要在Visual Basic中捕获SQL Error内部异常并将其显示在弹出窗口中。
要显示产品的名称,可以使用SELECT 1 FROM (...
查询中的子查询,并将ProductName添加到选择列表以填充变量,然后在RAISERROR字符串中使用该变量。如果有多个产品缺少数量,您需要决定您想要做什么。
答案 1 :(得分:0)
尝试在try...catch
结构中封装APP中插入的执行,您将能够显示消息