ПочатиПочніть безкоштовно

Вплив точки збереження на рівні ізоляції

Тепер, коли ви розібралися з точками збереження, скористаймося ними, щоб налаштувати серію транзакцій, яким усім потрібен один і той самий початковий знімок даних. REPEATABLE READ — це рівень ізоляції, який дає змогу кожному оператору всередині транзакції бачити ті самі дані, що й перший оператор, а не результат попередніх операторів.

Нещодавно FFEIC дозволила поступове обмеження іноземних депозитів — поле RCON2203 у тисячах — у наборі даних. Нові обмеження: 35% для сум понад $1 млрд, 25% для понад $500 млн і 13% для понад $300 млн. Можна впорядкувати ці оператори так, щоб уникнути багаторазового зменшення даних. Однак з REPEATABLE READ оператори бачать дані такими, якими вони були до будь-яких коригувань.

Ця вправа є частиною курсу

Транзакції та обробка помилок у PostgreSQL

Переглянути курс

Інструкції до вправи

  • Запустіть транзакцію з REPEATABLE READ.
  • Зменште RCON2203 на 35%, якщо сума понад $1 млрд; на 25%, якщо понад $500 млн; або на 13%, якщо понад $300 млн, встановлюючи SAVEPOINT після кожного кроку.
  • Завершіть транзакцію.
  • Підсумуйте поле RCON2203.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

-- 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 
Редагувати та запускати код