LOCK - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

LOCK

Limite l’accès à une table de base de données. Cette commande n’est significative que lorsqu’elle est exécutée à l’intérieur d’un bloc de transaction.

La commande LOCK obtient un verrou de niveau table en mode « ACCESS EXCLUSIVE », attendant si nécessaire que des verrous en conflit soient libérés. Un tel verrou explicite d’une table peut entraîner une attente des lectures et des écritures sur la table lorsqu’elles sont tentées à partir d’autres transactions ou séances. Un verrou de table explicite créé par un utilisateur empêche temporairement un autre utilisateur de sélectionner les données de cette table ou de les y charger. Le verrou est libéré lorsque la transaction qui contient la commande LOCK est terminée.

Les verrous de table moins restrictifs sont acquis implicitement par les commandes qui font référence aux tables, telles que les opérations d’écriture. Par exemple, si un utilisateur tente de lire les données d’une table pendant qu’un autre utilisateur met à jour la table, les données qui sont lues constituent un instantané des données déjà validées. (Dans certains cas, les requêtes sont arrêtées si elles violent les règles d’isolement sérialisable.) Consultez Gestion des opérations d’écriture simultanées.

Certaines opérations DDL, telles que DROP TABLE et TRUNCATE, créent des verrous exclusifs. Ces opérations empêchent les lectures de données.

Si un conflit de verrou se produit, Amazon Redshift affiche un message d’erreur pour avertir l’utilisateur qui a démarré la transaction en conflit. La transaction qui a reçu le conflit de verrou est arrêtée. Chaque fois qu’un conflit de verrou se produit, Amazon Redshift écrit une entrée dans la table STL_TR_CONFLICT.

Syntaxe

LOCK [ TABLE ] table_name [, ...]

Paramètres

TABLE

Mot-clé facultatif.

table_name

Nom de la table à verrouiller. Vous pouvez verrouiller plusieurs tables en utilisant une liste de noms de table séparés par des virgules. Vous ne pouvez pas verrouiller les vues.

Exemple

begin; lock event, sales; ...