Code : SQL
SELECT id, nom_courant FROM Espece AS table_esp;
Code : Console
ERROR 1100 (HY000): Table 'table_esp' was not locked with LOCK TABLES
Bien entendu, cela ne fonctionne que pour l'alias que l'on a donné lors du verrouillage.
4. Sélection dans Adoption, sans alias.
Code : SQL
SELECT * FROM Adoption;
Code : Console
ERROR 1100 (HY000): Table 'Adoption' was not locked with LOCK TABLES
Le verrou sur Adoption a été relâché lorsque l'on a posé les verrous sur Espece. On ne peut donc pas lire les données
d'Adoption (avec ou sans alias).
Conséquences pour les autres sessions
Si une session a obtenu un verrou de lecture sur une table, les autres sessions :
peuvent lire les données de la table ;
peuvent également acquérir un verrou de lecture sur cette table ;
ne peuvent pas modifier les données, ni acquérir un verrou d'écriture sur cette table.
Si par contre une session a obtenu un verrou d'écriture, les autres sessions ne peuvent absolument pas accéder à cette table
tant que ce verrou existe.
Exemples : ouvrez un deuxième client MySQL et connectez-vous à votre base de données, afin d'avoir deux sessions ouvertes.
1. Sélection sur des tables verrouillées à partir d'une autre session.
Session 1 :
Code : SQL
LOCK TABLES Client READ,
-- Verrou de lecture sur Client
Adoption WRITE;
-- Verrou d'écriture sur Adoption
Session 2 :
Code : SQL
SELECT id, nom, prenom, ville, email
FROM Client
WHERE ville = 'Houtsiplou';
Partie 5 : Sécuriser et automatiser ses actions
240/414
www.openclassrooms.com
Précédent

- 240/413

Suivant