Добро пожаловать: транзакции и обработка ошибок в PostgreSQL

Транзакции и обработка ошибок в PostgreSQL

Jason Myers

Principal Engineer

Цели обучения и наборы данных

  • Обеспечение целостности данных с помощью транзакций
  • Влияние параллелизма на транзакции
  • Обработка ошибок в транзакциях
Транзакции и обработка ошибок в PostgreSQL

Зачем использовать транзакции

patient_intake

name priority
Oscar Parker 1
Prisha Ahmed 2
Rhea Taylor 3
UPDATE patient_intake SET priority=1 
WHERE name='Prisha Ahmed';

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';
Транзакции и обработка ошибок в PostgreSQL

Результат с ошибкой в таблице

patient_intake

name priority
Oscar Parker 1
Prisha Ahmed 1
Rhea Taylor 3
Транзакции и обработка ошибок в PostgreSQL

Использование транзакции

BEGIN;

UPDATE patient_intake SET priority=1 
WHERE name='Prisha Ahmed';

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';

COMMIT;
Транзакции и обработка ошибок в PostgreSQL

Ещё один повод использовать транзакции

  • Несколько операторов, которые должны выполниться или завершиться с ошибкой как единое целое
  • Управление влиянием параллельных операций на операторы
Транзакции и обработка ошибок в PostgreSQL

Блоки транзакций

BEGIN TRANSACTION;

UPDATE patient_intake SET priority=1 
WHERE name='Prisha Ahmed';

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';

COMMIT;
Транзакции и обработка ошибок в PostgreSQL

Любое количество операторов

BEGIN;

UPDATE patient_intake SET priority=2 
WHERE name='Oscar Parker';

UPDATE patient_intake SET priority=1 
WHERE name='Rhea Taylor';

UPDATE patient_intake SET priority=3 
WHERE name='Prisha Ahmed';

COMMIT;
Транзакции и обработка ошибок в PostgreSQL

Давайте потренируемся!

Транзакции и обработка ошибок в PostgreSQL

Preparing Video For Download...