![](/img/trans.png)
[英]SQL 2008 Express (R2): Creating an UPDATE trigger to update a table on another 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.