我試圖在SQL Server中創建觸發器。我通過Access中的表單將數據插入到數據庫中。當我創建插入到我的SALESDETAILS
表中的新記錄時,我希望它減去表中我的In Stock
(列)剛輸入的quantity
(列)。 SALESDETAILS
包含PRODUCT
表(Product_ID
)中的FK。創建觸發器來更新SQL Server中的另一個表格
這就是我想出的,SQL Server創建了觸發器,但它現在不允許任何插入。在我嘗試插入內容後,它說PRODUCT.[In Stock]
不允許NULLS。 [In Stock]
確實有一個不允許NULLS的約束。
CREATE TRIGGER [Update_Stock]
ON SALESDETAILS
FOR INSERT
AS
BEGIN
UPDATE PRODUCT
SET PRODUCT.[In Stock] = (SELECT SALESDETAILS.Quantity - PRODUCT.[In Stock]
FROM SALESDETAILS
WHERE SALESDETAILS.Product_ID = PRODUCT.Product_ID)
END
我不認爲我能到達正確的思維,但我似乎無法弄清楚如何得到它減去剛插入關中PRODUCT
表中的列[In Stock]
的數量。
UPDATE PRODUCT SET [IN STOCK] = [IN STOCK] - inserted.Quantity其中Product_id = inserted.product_id不確定語法,但應該像這樣 – mxix 2015-03-24 23:33:04
您需要**參考** Inserted僞表以某種方式觸發你的觸發器 - 這就是包含已插入行的「表」 - 現在,每次插入單行時都更新整個表 - 不是非常高效 – 2015-03-25 06:09:40