Jeg har forsøgt at forstå forskellen mellem de to. Jeg vil dokumentere, hvad jeg har fundet i håb om, at det vil være nyttigt for den næste person.
Begge LOCK IN SHARE MODE og FOR UPDATE sikre, at ingen anden transaktion kan opdatere de valgte rækker. Forskellen mellem de to er, hvordan de behandler låse, mens de læser data.
LOCK IN SHARE MODE forhindrer ikke en anden transaktion i at læse den samme række, som blev låst.
FOR UPDATE forhindrer andre låsende læsninger af den samme række (ikke-låsende læsninger kan stadig læse den række; LOCK IN SHARE MODE og FOR UPDATE låser læser).
Dette har betydning i tilfælde som opdatering af tællere, hvor du læser værdien i 1 sætning og opdaterer værdien i en anden. Her ved hjælp af LOCK IN SHARE MODE vil tillade 2 transaktioner at læse den samme begyndelsesværdi. Så hvis tælleren blev forøget med 1 af begge transaktioner, vil slutantallet muligvis kun stige med 1 - da begge transaktioner oprindeligt læste den samme værdi.
Bruger FOR UPDATE ville have låst den 2. transaktion fra at læse værdien, til den første er gennemført. Dette vil sikre, at tælleren øges med 2.