创建触发器以更新SQL Server中的另一个表

时间:2015-03-24 23:22:07

标签: sql sql-server database tsql

我正在尝试在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]列刚刚插入的数量表。

1 个答案:

答案 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表中获取当前插入的值。