Niveaux d’isolation et transactions
SERIALIZABLE est un niveau d’isolation qui prend un instantané de l’enregistrement lorsque la première requête ou instruction de mise à jour est exécutée, et renvoie une erreur si les données sont modifiées de quelque manière que ce soit en dehors de la transaction. Notez que la transaction peut effectuer d’autres opérations, comme déclarer des variables, avant la première requête.
Vous allez de nouveau utiliser le jeu de données FFIEC pour travailler sur des données où la variation annuelle des dépôts d’épargne RCON0352 est affectée par un important décalage.
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions
- Démarrez une transaction en mode
SERIALIZABLE. - Mettez à jour tous les enregistrements où
RCON0352est supérieur à 100 000 avec une réduction de 50 %. COMMITla transaction.- Sélectionnez le nombre d’enregistrements ayant encore un
RCON0352supérieur à 100 000.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- Create a new transaction with a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;