Some transactions require the whole table to be locked for update. That is, you don't want to have the set change on you in the middle of the read - unless you want dirty reads.