Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Limita l'accesso a una tabella del database. Questo comando è significativo solo quando viene eseguito all'interno di un blocco di transazione.
Il comando LOCK ottiene un blocco a livello di tabella in modalità "ACCESS EXCLUSIVE", in attesa, se necessario, di eventuali blocchi in conflitto da rilasciare. Bloccare esplicitamente una tabella in questo modo fa sì che le letture e le scritture sulla tabella restino in attesa quando vengono tentate da altre transazioni o sessioni. Un blocco esplicito della tabella creato da un utente impedisce temporaneamente a un altro utente di selezionare i dati da quella tabella o di caricare dati in essa. Il blocco viene rilasciato quando la transazione che contiene il comando LOCK viene completata.
I blocchi di tabella meno restrittivi vengono acquisiti implicitamente da comandi che fanno riferimento a tabelle, ad esempio operazioni di scrittura. Ad esempio, se un utente tenta di leggere i dati da una tabella mentre un altro utente sta aggiornando la tabella, i dati letti saranno uno snapshot dei dati che sono già stati sottoposti al commit. (In alcuni casi, le query vengono interrotte in modo anomalo se violano le regole di isolamento serializzabili.) Consultare Gestione delle operazioni di scrittura simultanee.
Alcune operazioni DDL, come DROP TABLE e TRUNCATE, creano blocchi esclusivi. Queste operazioni impediscono le letture dei dati.
Se si verifica un conflitto di blocco, Amazon Redshift visualizza un messaggio di errore per avvisare l'utente che ha avviato la transazione in conflitto. La transazione che ha ricevuto il conflitto di blocco viene interrotta. Ogni volta che si verifica un conflitto di blocco, Amazon Redshift scrive una voce nella tabella STL_TR_CONFLICT.
Sintassi
LOCK [ TABLE ] table_name [, ...]
Parametri
- TABLE
-
Parola chiave facoltativa.
- table_name
-
Nome della tabella da bloccare. Puoi bloccare più di una tabella utilizzando un elenco di nomi di tabella delimitati da virgole. Non è possibile bloccare le viste.
Esempio
begin;
lock event, sales;
...