sql >> Databasteknik >  >> RDS >> Oracle

Exklusivt bordslås (läs) på Oracle 10g?

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 .



  1. Hoppa över vissa tabeller med mysqldump

  2. Oracle Advanced Queuing med .Net

  3. Rekursiv MySQL-fråga med relationell innoDB

  4. Hur använder man strftime och datetime korrekt med Room library?