我正在尝试在SQL Server中创建一个触发器。我正在通过我在Access中创建的表单将数据插入数据库。当我创建一个插入我的SALESDETAILS
表的新记录时,我希望它从我quantity
(列)中输入的In Stock
(列)中减去{1}}表。 PRODUCT
包含SALESDETAILS
表(PRODUCT
)中的FK。
这就是我提出的,SQL Server创建了触发器,但它现在不允许任何插入。在我尝试插入某些内容后,它表示Product_ID
不允许使用NULLS。 PRODUCT.[In Stock]
确实有一个不允许NULLS的约束。
[In Stock]
我认为我没有正确地思考这个问题,但我似乎无法弄清楚如何让它减去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
列中[In Stock]
列刚刚插入的数量表。
答案 0 :(得分:3)
尝试使用触发器:
CREATE TRIGGER [Update_Stock] ON SALESDETAILS FOR INSERT
AS BEGIN
Update p
set p.stock = p.[stock] - i.quantity
FROM product AS p
INNER JOIN inserted AS i
ON p.id = i.[product_id]
WHERE p.id = i.product_id
END
Inserted是一个表,可让您在SALESDETAILS表中获取当前插入的值。