使用sum和多个表连接创建sql触发器,这将更新多个记录

时间:2018-01-15 17:57:33

标签: sql-server triggers

我在发布时很新,但从过去的浏​​览中学到了很多东西。我似乎找不到解决这个问题的方法。

我创建了一个触发器,用于在更新或删除后使用另一个表的总和来更新列。为了使问题复杂化,我必须根据引用查找表的另一列来确定要更新的列(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)

结束

结束

0 个答案:

没有答案