Niveaux d'isolement et transactions
SERIALIZABLE est un niveau d'isolement qui prend un instantané de l'enregistrement au moment où la première requête ou instruction de mise à jour est lancée, et génère une erreur si les données sont modifiées de quelque façon que ce soit à l'extérieur 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 réutiliser l'ensemble de données de la FFIEC pour travailler avec des données où la variation annuelle des dépôts d'épargne RCON0352 est affectée par un important décalage.
Cette activité fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions de l’exercice
- Démarrez une transaction en mode
SERIALIZABLE. - Mettez à jour tous les enregistrements où
RCON0352est supérieur à 100 000 en appliquant une réduction de 50 %. COMMITla transaction.- Sélectionnez le nombre d'enregistrements dont la valeur
RCON0352est encore supérieure à 100 000.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- 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;