Исходный код вики Примеры.

Версия 1.2 от Alexandr Fokin на 2023/01/08 19:09

Скрыть последних авторов
Alexandr Fokin 1.2 1 |(% style="width:257px" %)**Необходимый уровень изоляции**|(% style="width:658px" %)**Запрос**|(% style="width:579px" %)**Комментарий**
2 |(% style="width:257px" %)Read Committed Isolation Level|(% style="width:658px" %){{code language="none"}}BEGIN;
Alexandr Fokin 1.1 3
Alexandr Fokin 1.2 4 UPDATE accounts
5 SET balance = balance + @payment
6 WHERE acctnum = @account1
Alexandr Fokin 1.1 7
Alexandr Fokin 1.2 8 UPDATE accounts
9 SET balance = balance - @payment
10 WHERE acctnum = @account;
Alexandr Fokin 1.1 11
Alexandr Fokin 1.2 12 COMMIT;{{/code}}|(% style="width:579px" %)Относительное изменения значения (а не константное).
13 |(% style="width:257px" %)Read Committed Isolation Level|(% style="width:658px" %){{code language="none"}}BEGIN;
14
Alexandr Fokin 1.1 15 if (SELECT balance FROM accounts where acctnum = 7534) < @payment
16 RAISE EXCEPTION ''
17 END IF
18
Alexandr Fokin 1.2 19 UPDATE accounts
20 SET balance = balance + @payment
21 WHERE acctnum = @account1
Alexandr Fokin 1.1 22
Alexandr Fokin 1.2 23 UPDATE accounts
24 SET balance = balance - @payment
25 WHERE acctnum = @account;
Alexandr Fokin 1.1 26
Alexandr Fokin 1.2 27 COMMIT;{{/code}}|(% style="width:579px" %)Предварительная проверка условия перед изменением строк.
28