SQL触发器

Mar*_*iff 1 sql triggers

我有附加的触发器,如果tbl_repair_visit.TENANTSATISFACTION = 'Poor'在更新时运行.

我有这个问题,如果我们更改工程师名称,工程师列会更新,触发器会再次运行 TENANTSATISFACTION = 'Poor'

我如何将其设置为仅在TENANTSATISFACTION = 'Poor'列更新时运行并忽略所有其他列的更新

ALTER TRIGGER [dbo].[tr_CustomerSatisfactionAlertRepair] 
    ON [dbo].[tbl_repair_visit] 
AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    INSERT alertmessagedata (TypeID, Contract, Address, ORDERID, 
                ENGINEERS, Sent, DateAdded)
    SELECT '5', tbl_property.contract, tbl_property.fulladdress, 
            tbl_repair_visit.orderid, tbl_repair_visit.engineer, 
            0, GETDATE()
    FROM TBL_REPAIR_VISIT 
    INNER JOIN
        INSERTED X ON TBL_REPAIR_VISIT.VISITID = X.VISITID 
    INNER JOIN 
        TBL_PROPERTY ON TBL_REPAIR_VISIT.PROPREF = TBL_PROPERTY.PROPREF
    WHERE tbl_repair_visit.TENANTSATISFACTION = 'Poor'
END
Run Code Online (Sandbox Code Playgroud)

Mik*_* K. 5

在更新触发器中,您可以检查列是否正在更新:

如果更新(TENANTSATISFACTION)开始....结束