Hvis du bare vil forhindre enhver anden session i at ændre dataene, kan du udstede
LOCK TABLE whatever
/
Dette blokerer andre sessioner fra at opdatere dataene, men vi kan ikke blokere andre personer i at læse dem.
Bemærk, at en sådan tabellåsning sjældent er påkrævet i Oracle, fordi Oracle har en politik for læsekonsistens. Hvilket betyder, at hvis vi kører en forespørgsel, der tager femten minutter at køre, vil den sidst returnerede række være i overensstemmelse med den første række; med andre ord, hvis resultatsættet var blevet sorteret i omvendt rækkefølge, ville vi stadig se nøjagtig de samme rækker.
rediger
Hvis du vil implementere en kø (uden egentlig at bruge Oracles indbygget Advanced Queuing-funktionalitet
) derefter SELECT ... FOR UPDATE
er vejen at gå. Denne konstruktion tillader en session at vælge og låse en eller flere rækker. Andre sessioner kan opdatere de ulåste rækker. Det er dog ret besværligt at implementere en ægte kø, medmindre du bruger 11g. Det er kun i den seneste version, at Oracle har understøttet SKIP LOCKED
klausul. Få mere at vide
.