Om du bara vill förhindra att någon annan session ändrar data kan du göra det
LOCK TABLE whatever
/
Detta blockerar andra sessioner från att uppdatera data men vi kan inte blockera andra personer från att läsa den.
Observera att sådan tabelllåsning i Oracle sällan krävs, eftersom Oracle har en policy för läskonsistens. Vilket betyder att om vi kör en fråga som tar femton minuter att köra kommer den sista raden som returneras att överensstämma med den första raden; med andra ord, om resultatuppsättningen hade sorterats i omvänd ordning skulle vi fortfarande se exakt samma rader.
redigera
Om du vill implementera en kö (utan att faktiskt använda Oracles inbyggd avancerad köfunktion
) sedan SELECT ... FOR UPDATE
är vägen att gå. Denna konstruktion tillåter en session att välja och låsa en eller flera rader. Andra sessioner kan uppdatera de olåsta raderna. Att implementera en äkta kö är dock ganska besvärligt, om du inte använder 11g. Det är bara i den senaste versionen som Oracle har stöd för SKIP LOCKED
klausul. Läs mer
.