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