sql >> Database teknologi >  >> RDS >> Oracle

Eksklusiv bord (læs) lås på Oracle 10g?

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 .



  1. Codeigniter Select_Sum returnerer array ikke numerisk værdi?

  2. MySQL:Forskel mellem `... ADD INDEX(a); ... TILFØJ INDEKS(b);` og `... TILFØJ INDEKS(a,b);`?

  3. Næsten nul nedetid automatiserede opgraderinger af PostgreSQL-klynger i skyen (del I)

  4. Forespørgsel for at finde fuld tabelscanninger i Oracle