我試圖創建一個更新觸發器,用於檢查某個產品的庫存量,以及某人訂購的產品的數量並顯示如果該產品沒有足夠的信息有貨。搜索具有特定插入值的行,然後將該行中的值與插入值進行比較
它讓我創建觸發器,但測試時,它會顯示一個錯誤「子查詢返回多個值。當子查詢遵循=,!=,...這是不允許的」
我我並沒有真正理解它是如何返回多個值的,因爲我已經搜索具有與插入值相匹配的產品ID的特定行。然後我將它與插入的值進行比較。
這是我到目前爲止有:
CREATE TRIGGER tr_check_qty
ON OrderDetails
FOR UPDATE
AS
DECLARE @ProductID int,
@Quantity int
SELECT @ProductID = ProductID,
@Quantity = Quantity
FROM inserted
WHERE @ProductID = (SELECT ProductID FROM Products)
IF
@Quantity > (SELECT UnitsInStock FROM Products)
BEGIN
PRINT 'Not enough product in stock'
ROLLBACK TRANSACTION
END
你的觸發器壞了 - 你假定'inserted'只包含一行,這是*不是一般的假設。 (觸發器每個*語句*運行一次,而不是每個*行*一次) – 2012-03-28 06:56:18