繁体   English   中英

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

[英]Creating a Trigger to update another Table in SQL Server

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

这就是我提出的,SQL Server创建了触发器,但它现在不允许任何插入。 在我尝试插入内容之后,它说PRODUCT.[In Stock]有货PRODUCT.[In Stock]不允许NULLS。 [In Stock]有货[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]列中插入的数量。

试试这个触发器:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM