Gestion des verrous (LOCK)

La gestion des verrous est utilisée pour assurer qu'une ressource (ligne, table) ne soit pas modifiée simultanément par plusieurs transactions d'une manière qui pourrait entraîner des incohérences. MySQL implémente deux types de verrous principaux : les verrous partagés et les verrous exclusifs.

6.3.1 Verrous partagés (Shared locks, LOCK IN SHARE MODE)

Un verrou partagé permet à plusieurs transactions de lire une ressource simultanément, mais aucune transaction ne peut la modifier tant que le verrou est actif.

Exemple de verrou partagé :

START TRANSACTION;

SELECT * FROM produits WHERE id_produit = 1 LOCK IN SHARE MODE;

Cela permet à d'autres transactions de lire le produit, mais interdit les modifications.

6.3.2 Verrous exclusifs (Exclusive locks, FOR UPDATE)

Un verrou exclusif empêche toute autre transaction de lire ou de modifier une ressource jusqu'à la fin de la transaction.

Exemple de verrou exclusif :

START TRANSACTION;

SELECT * FROM produits WHERE id_produit = 1 FOR UPDATE;

Cela empêche toute autre transaction de lire ou modifier le produit id_produit = 1 tant que la transaction en cours n'est pas terminée.

6.3.3 Libérer des verrous :

Les verrous sont automatiquement libérés lorsque la transaction est validée (COMMIT) ou annulée (ROLLBACK).

Last updated