Ако просто искате да попречите на друга сесия да променя данните, можете да издадете
LOCK TABLE whatever
/
Това блокира други сесии да актуализират данните, но не можем да блокираме други хора да ги четат.
Обърнете внимание, че в Oracle такова заключване на таблица рядко се изисква, тъй като Oracle работи с политика на последователност при четене. Което означава, че ако изпълним заявка, която отнема петнадесет минути за изпълнение, последният върнат ред ще бъде съвместим с първия ред; с други думи, ако наборът от резултати беше сортиран в обратен ред, пак щяхме да виждаме точно същите редове.
редактиране
Ако искате да внедрите опашка (без всъщност да използвате вградена разширена функция за опашка
), след това SELECT ... FOR UPDATE
е пътят. Тази конструкция позволява една сесия да избира и заключва един или повече редове. Други сесии могат да актуализират отключените редове. Имплементирането на истинска опашка обаче е доста тромаво, освен ако не използвате 11g. Само в последната версия Oracle поддържа SKIP LOCKED
клауза. Научете повече
.