• SQL Server triggers only fire once per statement, no matter how many rows are INSERTed or UPDATEd (or DELETEd).

    Therefore, it's not safe to use variables to get column data (unless you use cursors, and nobody wants that).

    CREATE TRIGGER dbo.tr_num_rented_update

    ON dbo.customer_rentals

    AFTER UPDATE

    AS

    SET NOCOUNT ON;

    UPDATE m

    SET num_rentals = num_rentals + new.num_rentals - old.num_rentals

    FROM dbo.movies AS m

    INNER JOIN (

    SELECT movie_id, COUNT(*) AS num_rentals

    FROM inserted

    GROUP BY movie_id

    ) AS new ON

    new.movie_id = m.movie_id

    INNER JOIN (

    SELECT movie_id, COUNT(*) AS num_rentals

    FROM deleted

    GROUP BY movie_id

    ) AS old ON

    old.movie_id = m.movie_id

    GO

    SQL DBA,SQL Server MVP(07, 08, 09) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies".