我的触发器永远在运行?知道为什么吗?

Pau*_*oza 0 t-sql sql-server triggers

我创建了跟随TSQL触发器,只要基础表更新,它就会永远运行.

CREATE TRIGGER Trigger_MDSS_ComputeAggregates
ON dbo.MonthlyDetectionScoresSums
AFTER UPDATE, INSERT
AS
BEGIN


update dbo.MonthlyDetectionScoresSums
SET
YPElec = CAST(COALESCE (i.YPLocChain_TotElec, i.YPGlobChain_TotElec, i.YPSIC_TotElec) AS real),
YPGas = CAST(COALESCE (i.YPLocChain_TotGas, i.YPSIC_TotGas) AS real)
from MonthlyDetectionScoresSums mdss
inner join INSERTED i on i.ACI_OI = mdss.ACI_OI

END
GO
Run Code Online (Sandbox Code Playgroud)

你知道为什么它可能会运行很长一段时间吗?

gbn*_*gbn 5

我可以建议您使用计算列并删除触发器吗?

ALTER TABLE dbo.MonthlyDetectionScoresSums ADD
    YPElec AS CAST(COALESCE (YPLocChain_TotElec, YPGlobChain_TotElec, YPSIC_TotElec) AS real)
    YPGas AS CAST(COALESCE (YPLocChain_TotGas, YPSIC_TotGas) AS real)
Run Code Online (Sandbox Code Playgroud)

从我看到的,您正在更新刚刚更新/插入的行.数据库引擎将为您完成,无需触发器.

  • 这是肯定的正确解决方案.我要从现在开始改变它们使用它. (2认同)