gpt4 book ai didi

sql - 在 SQL Server 中创建一个触发器来更新另一个表

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:59 25 4
gpt4 key购买 nike

我正在尝试在 SQL Server 中创建触发器。我正在通过在 Access 中创建的表单将数据插入数据库。当我创建一条插入到我的 SALESDETAILS 表中的新记录时,我希望它减去刚刚从我的 In Stock 输入的 quantity(列) (列)在我的 PRODUCT 表中。 SALESDETAILS 包含来自 PRODUCT 表 (Product_ID) 的 FK。

这就是我想出的,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

我认为我没有正确考虑这个问题,但我似乎无法弄清楚如何让它减去刚从 [In Stock] 中插入的数量PRODUCT 表中的列。

最佳答案

试试这个触发器:

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

关于sql - 在 SQL Server 中创建一个触发器来更新另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com