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

Blocco tavolo esclusivo (lettura) su Oracle 10g?

Se vuoi semplicemente impedire a qualsiasi altra sessione di modificare i dati puoi emettere

LOCK TABLE whatever
/

Questo impedisce ad altre sessioni di aggiornare i dati ma non possiamo impedire ad altre persone di leggerli.

Si noti che in Oracle tale blocco della tabella è raramente richiesto, poiché Oracle gestisce una politica di coerenza di lettura. Ciò significa che se eseguiamo una query che impiega quindici minuti per eseguire l'ultima riga restituita sarà coerente con la prima riga; in altre parole, se il set di risultati fosse stato ordinato in ordine inverso, vedremmo comunque esattamente le stesse righe.

modifica

Se desideri implementare una coda (senza utilizzare effettivamente funzionalità di coda avanzata integrata ) quindi SELECT ... FOR UPDATE è la strada da percorrere. Questo costrutto consente a una sessione di selezionare e bloccare una o più righe. Altre sessioni possono aggiornare le righe sbloccate. Tuttavia, l'implementazione di una coda genuina è piuttosto macchinosa, a meno che non si utilizzi 11g. È solo nell'ultima versione che Oracle ha supportato SKIP LOCKED clausola. Scopri di più .