Mini-TP : Simulation d'accès concurrents sous PostgreSQL
Se connecter deux fois à une même base de données dans deux terminaux (term1 et term2) :
psql mydb
psql mydb
Créer une table
test
:CREATE TABLE test (a integer);
Question
term1 Insérer une valeur :
INSERT ...
(COMMIT
implicite)term2 Vérifier que la valeur est visible :
SELECT ...
Question
term1 Commencer une transaction :
BEGIN TRANSACTION;
term1 Insérer la valeur 2 dans la table :
INSERT INTO...
term1 Vérifier que la valeur est bien dans la table :
SELECT * FROM ...
term2 Vérifier que la valeur n'est pas visible :
SELECT * FROM ...
term1 Valider la transaction :
COMMIT;
term2 Vérifier que la valeur est visible :
SELECT * FROM ...
Question
term1 Commencer une transaction :
BEGIN TRANSACTION;
term1 Exécuter une mise à jour (multiplier toutes les valeurs par 2) :
UPDATE...
term2 Exécuter une mise à jour concurrente (multiplier les valeurs par 3) :
UPDATE...
term2 Observer la mise en attente
term1 Valider la transaction :
COMMIT;
term2 Vérifier le déblocage et que les deux mises à jour ont bien été effectuées (a multiplié par 6) :
SELECT...
term1 Vérifier que les deux mises à jour ont bien été effectuées (a multiplié par 6) :
SELECT...