• it seems to me that you might be able to replace the trigger with default values.

    the WHERE criteria is huge in your example, and ALL must be zero to get the trigger to punch in changes?

    As Kieth mentioned, he's guessing it's probably to fix any zero values, so it doesn't quite look right; i'd agree i'd suspect the intention is to replace zeros with expected values.

    here's a trigger that actually does exactly what the update should do, and a second one that does what i agree might be the desired outcome.

    CREATE TRIGGER TR_PrmMilkVisitExample1 ON dbo.PrmMilkVisit

    FOR UPDATE

    AS

    UPDATE MyTarget

    SET MyTarget.MviLFXPosition = 60,

    MyTarget.MviLFYPosition = 660,

    MyTarget.MviLFZPosition = 510,

    MyTarget.MviLRXPosition = 30,

    MyTarget.MviLRYPosition = 780,

    MyTarget.MviLRZPosition = 520,

    MyTarget.MviRFXPosition = -70,

    MyTarget.MviRFYPosition = 670,

    MyTarget.MviRFZPosition = 500,

    MyTarget.MviRRXPosition = -30,

    MyTarget.MviRRYPosition = 790,

    MyTarget.MviRRZPosition = 520

    FROM dbo.PrmMilkVisit MyTarget

    INNER JOIN INSERTED T1

    ON MyTarget.LacId = T1.LacId --only the records updated in this set

    WHERE MyTarget.MviLFXPosition = 0

    AND MyTarget.MviLFYPosition = 0

    AND MyTarget.MviLFZPosition = 0

    AND MyTarget.MviLRXPosition = 0

    AND MyTarget.MviLRYPosition = 0

    AND MyTarget.MviLRZPosition = 0

    AND MyTarget.MviRFXPosition = 0

    AND MyTarget.MviRFYPosition = 0

    AND MyTarget.MviRFZPosition = 0

    AND MyTarget.MviRRXPosition = 0

    AND MyTarget.MviRRYPosition = 0

    AND MyTarget.MviRRZPosition = 0

    CREATE TRIGGER TR_PrmMilkVisitExample2 ON dbo.PrmMilkVisit

    FOR UPDATE

    AS

    UPDATE MyTarget

    SET MyTarget.MviLFXPosition = CASE WHEN T1.MviLFXPosition = 0 THEN 60 ELSE T1.MviLFXPosition END,

    MyTarget.MviLFYPosition = CASE WHEN T1.MviLFYPosition = 0 THEN 660 ELSE T1.MviLFYPosition END,

    MyTarget.MviLFZPosition = CASE WHEN T1.MviLFZPosition = 0 THEN 510 ELSE T1.MviLFZPosition END,

    MyTarget.MviLRXPosition = CASE WHEN T1.MviLRXPosition = 0 THEN 30 ELSE T1.MviLRXPosition END,

    MyTarget.MviLRYPosition = CASE WHEN T1.MviLRYPosition = 0 THEN 780 ELSE T1.MviLRYPosition END,

    MyTarget.MviLRZPosition = CASE WHEN T1.MviLRZPosition = 0 THEN 520 ELSE T1.MviLRZPosition END,

    MyTarget.MviRFXPosition = CASE WHEN T1.MviRFXPosition = 0 THEN -70 ELSE T1.MviRFXPosition END,

    MyTarget.MviRFYPosition = CASE WHEN T1.MviRFYPosition = 0 THEN 670 ELSE T1.MviRFYPosition END,

    MyTarget.MviRFZPosition = CASE WHEN T1.MviRFZPosition = 0 THEN 500 ELSE T1.MviRFZPosition END,

    MyTarget.MviRRXPosition = CASE WHEN T1.MviRRXPosition = 0 THEN -30 ELSE T1.MviRRXPosition END,

    MyTarget.MviRRYPosition = CASE WHEN T1.MviRRYPosition = 0 THEN 790 ELSE T1.MviRRYPosition END,

    MyTarget.MviRRZPosition = CASE WHEN T1.MviRRZPosition = 0 THEN 52 ELSE T1.MviRRZPosition END

    FROM dbo.PrmMilkVisit MyTarget

    INNER JOIN INSERTED T1

    ON MyTarget.LacId = T1.LacId --only the records updated in this set

    Lowell


    --help us help you! If you post a question, make sure you include a CREATE TABLE... statement and INSERT INTO... statement into that table to give the volunteers here representative data. with your description of the problem, we can provide a tested, verifiable solution to your question! asking the question the right way gets you a tested answer the fastest way possible!