我在发布时很新,但从过去的浏览中学到了很多东西。我似乎找不到解决这个问题的方法。
我创建了一个触发器,用于在更新或删除后使用另一个表的总和来更新列。为了使问题复杂化,我必须根据引用查找表的另一列来确定要更新的列(Metric1,Metric2,... Metric5),以将值映射到5个度量列中的一个。只要更新仅影响一条记录,逻辑就可以正常工作。
如果我执行多条记录的更新,我会收到此错误
"子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。"
以下是代码:
ALTER TRIGGER [dbo]。[UpdateMetric_UPD] ON [dbo]。[JobMat]
更新后,删除
AS
BEGIN
设置NOCOUNT
BEGIN
更新JobPhases
Set Metric1=(Select Sum(INS.Qty)
FROM (((INSERTED INS
JOIN JobMat JM
ON JM.JobCode=INS.JobCode And JM.JSFXDetail=INS.JSFXDetail)
JOIN Inventory Inv
ON Inv.PartNum=JM.Code)
JOIN MatGroupMap MGM
ON MGM.[GroupNum]=Inv.MetricGroup )
WHERE MGM.GroupMap=1
GROUP BY
INS.JobCode,INS.JsfxDetail,INS.Code,MGM.GroupMap
)
Where JobPhases.JobCode IN (SELECT JobCode From Inserted)
And JobPhases.JSFXDetail IN (SELECT JSFXDetail From INSERTED)
结束
结束