c# - 向 tblPurchase 表插入新记录时更新 tblProductStock 表
问题描述
ALTER PROCEDURE [dbo].[spPassPurchaseDataToProductStock]
AS
BEGIN
SELECT MAX(ItemName) ItemName, ItemCode, SUM(Quantity) Quantity
INTO #tmp
FROM tblPurchase
GROUP BY itemCode;
UPDATE tblProductStock
SET Quantity = #tmp.Quantity
FROM #tmp
WHERE ItemCode = #tmp.ItemCode
INSERT INTO tblProductStock (ItemName, ItemCode, Quantity)
SELECT ItemName, ItemCode, Quantity
FROM #tmp
WHERE ItemCode NOT IN (SELECT ItemCode FROM tblProductStock)
DROP TABLE #tmp;
END
解决方案
我认为 SQL Server 触发器可以帮助您解决这个问题。触发器是一种特殊类型的存储过程,当数据库服务器中发生事件时会自动运行。
CREATE TRIGGER <TriggerName>
ON ProductStock
AFTER INSERT | UPDATE
AS { sql_statement }
推荐阅读
- r - 使用 qtm() 和 openstreetmaps 在 do.call(rbind, x) 中出错
- java - 如何获取 concatWith 中使用的第一个 Flowable 的大小
- ruby-on-rails - 独角兽进程无故被杀死
- rust - 使用 clickhouse 依赖运行 cargo build 时出错
- mysql - 存储过程问题
- python - 如何使用 ipywidget 选择 Pandas DataFrame?
- c# - 使用 C# 在 Blazor 中动态生成圆圈
- java - “maven-cucmber-reporting”插件无法解决。也无法生成报告。黄瓜,马文
- vue.js - 禁用 nuxt 代码拆分。如何将所有内容打包到一个文件中
- php - 当某些值可以为空时如何通过许多输入过滤电子商务商店中的产品