Примеры.

Версия 1.7 от Alexandr Fokin на 2023/01/09 03:09

Необходимый уровень изоляцииЗапросКомментарий
Read CommittedBEGIN;

 UPDATE accounts
 SET balance = balance + @payment
 WHERE acctnum = @account1

 UPDATE accounts
 SET balance = balance - @payment
 WHERE acctnum = @account;

COMMIT;
  • Относительное изменения значения (а не константное).
  • Без проверок.
Read CommittedBEGIN;

  if (SELECT balance FROM accounts where acctnum = 7534) < @payment
   RAISE EXCEPTION ''
  END IF

 UPDATE accounts
 SET balance = balance + @payment
 WHERE acctnum = @account1

 UPDATE accounts
 SET balance = balance - @payment
 WHERE acctnum = @account;

COMMIT;
  • Предварительная проверка условия перед изменением строк.