I have a table that keeps running totals. It is possible that this would get called twice simultaneously for the same UserID. Do I need to put this in a serializable transaction? Since this gets called often, could it be a performance problem if I make it serializable?

CREATE FUNCTION UpdateTotals(IN UserID int,
                             IN AddToCount int,
                             IN AddToSize bigint)
RETURNS void AS $$
BEGIN
    UPDATE
        Totals
    SET
        TotalSize = TotalSize + $2,
        TotalCount = TotalCount + $3
    WHERE
        UserID = $1;
    END IF;
END
$$ LANGUAGE 'plpgsql' VOLATILE;

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to