我试图在SQL Server中创建触发器。我通过Access中的表单将数据插入到数据库中。当我创建插入到我的SALESDETAILS
表中的新记录时,我希望它减去表中我的In Stock
(列)刚输入的quantity
(列)。 SALESDETAILS
包含PRODUCT
表(Product_ID
)中的FK。创建触发器来更新SQL Server中的另一个表格
这就是我想出的,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
我不认为我能到达正确的思维,但我似乎无法弄清楚如何得到它减去刚插入关中PRODUCT
表中的列[In Stock]
的数量。
UPDATE PRODUCT SET [IN STOCK] = [IN STOCK] - inserted.Quantity其中Product_id = inserted.product_id不确定语法,但应该像这样 – mxix 2015-03-24 23:33:04
您需要**参考** Inserted伪表以某种方式触发你的触发器 - 这就是包含已插入行的“表” - 现在,每次插入单行时都更新整个表 - 不是非常高效 – 2015-03-25 06:09:40