我想在一個表中插入值後更新多個表和值,所以我創建了一個觸發器。它工作正常一行的插入,但只要我插入多個行,SQL Server的給了我以下錯誤:子查詢返回的值超過1。當子查詢遵循=或子查詢用作表達式時,這是不允許的?
subquery returned more than 1 value. this is not permitted when the subquery follows = or when the subquery is used as an expression?
這裏是我的觸發器:
CREATE TRIGGER [dbo].[tbl_Sales_ForInsert]
ON [dbo].[SALES]
FOR INSERT
AS
BEGIN
DECLARE @ITEMMODEL varchar(100)
SELECT @ITEMMODEL = ITEM_MODEL FROM inserted
UPDATE SALES
SET PROFIT = TOTAL_PRICE - (SELECT QUANTITY FROM SALES WHERE ITEM_MODEL = @ITEMMODEL) * (SELECT RATE FROM ITEM_DETAILS WHERE ITEM_MODEL = @ITEMMODEL)
WHERE ITEM_MODEL = @ITEMMODEL
UPDATE ITEM_DETAILS
SET QUANTITY = QUANTITY - (SELECT QUANTITY FROM SALES WHERE ITEM_MODEL = @ITEMMODEL)
WHERE ITEM_MODEL = @ITEMMODEL
--UPDATE ITEM_DETAILS SET AMOUNT = AMOUNT - (SELECT RATE FROM ITEM_DETAILS WHERE [email protected]) * (SELECT QUANTITY FROM SALES WHERE [email protected]) where [email protected]
END
正如我在SALES
表中插入數據第一次更新成功,但第二次它給了我上面的錯誤記住ITEM_MODEL
是SALES表中的外鍵約束。
我一直在遭受這個錯誤任何人都可以幫助我嗎?
是您的外鍵唯一嗎? – Hamidreza