Effet du point de sauvegarde sur les niveaux d'isolement
Maintenant que vous avez exploré les points de sauvegarde, utilisez-les pour mettre en place une série de transactions qui doivent toutes partir du même instantané initial des données. REPEATABLE READ est un niveau d'isolement qui permet de donner à chaque instruction à l'intérieur de la transaction les mêmes données que celles sur lesquelles a opéré la première instruction, plutôt que les données modifiées par la ou les instructions précédentes.
Récemment, la FFEIC a permis une réduction progressive des dépôts étrangers, champ RCON2203 (en milliers), dans l'ensemble de données. La nouvelle réduction est de 35 % pour plus de 1 G\( (1 milliard de dollars), de 25 % pour plus de 500 M\), et de 13 % pour plus de 300 M$. Il est possible d'ordonner ces instructions pour éviter de réduire les données plus d'une fois. Toutefois, avec REPEATABLE READ, les instructions voient les données telles qu'elles étaient avant tout ajustement.
Cette activité fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions de l’exercice
- Démarrez une transaction
REPEATABLE READ. - Réduisez
RCON2203de 35 % si la valeur est supérieure à 1 G\(, de 25 % si elle est supérieure à 500 M\), ou de 13 % si elle est supérieure à 300 M$, avec unSAVEPOINTaprès chacune. - Fermez la transaction.
- Totalisez le champ
RCON2203.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- Create a new transaction with a repeatable read isolation level
___ TRANSACTION ISOLATION LEVEL ___ ___;
-- Update records with a 35% reduction if greater than 1000000000
UPDATE ffiec_reci
SET ___ = CAST(___ AS FLOAT) * .65
WHERE CAST(RCON2203 AS FLOAT) > 1000000000;
___ million;
-- Update records with a 25% reduction if greater than 500000000
UPDATE ___
___ ___ = CAST(___ AS FLOAT) * .75
___ CAST(RCON2203 AS FLOAT) ___ 500000000;
SAVEPOINT five_hundred;
-- Update records with a 13% reduction if greater than 300000000
___ ffiec_reci
___ ___ = CAST(___ AS FLOAT) * .87
___ CAST(___ AS FLOAT) ___ 300000000;
SAVEPOINT three_hundred;
-- Commit the transaction
___;
-- Select SUM the RCON2203 field
SELECT ___(CAST(RCON2203 AS FLOAT))
FROM ffiec_reci