Учебное пособие Санкт-Петербург «бхв-петербург»



Pdf көрінісі
бет210/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   206   207   208   209   210   211   212   213   ...   256
sql osnovi yazika

UPDATE modes
SET mode = 'LOW'
WHERE mode = 'HIGH'
RETURNING *;
num | mode
-----+------
2 | LOW
1 | LOW
(2 строки)
UPDATE 2
END;
COMMIT
273


Глава 9. Транзакции
Проверим, что получилось:
SELECT * FROM modes;
num | mode
-----+------
2 | LOW
1 | LOW
(2 строки)
Во втором варианте упорядочения поменяем транзакции местами. Конечно, предва-
рительно нужно привести таблицу в исходное состояние.
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN
UPDATE modes
SET mode = 'LOW'
WHERE mode = 'HIGH'
RETURNING *;
num | mode
-----+------
2 | LOW
(1 строка)
UPDATE 1
END;
COMMIT
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN
UPDATE modes
SET mode = 'HIGH'
WHERE mode = 'LOW'
RETURNING *;
274


9.6. Пример использования транзакций
num | mode
-----+------
1 | HIGH
2 | HIGH
(2 строки)
UPDATE 2
END;
COMMIT
SELECT * FROM modes;
Теперь результат отличается от того, который был получен при реализации первого
варианта упорядочения транзакций.
num | mode
-----+------
1 | HIGH
2 | HIGH
(2 строки)
Изменение порядка выполнения транзакций приводит к разным результатам. Одна-
ко если бы при параллельном выполнении транзакций была зафиксирована и вторая
из них, то полученный результат не соответствовал бы ни одному из продемонстриро-
ванных возможных результатов последовательного выполнения транзакций. Таким
образом, выполнить сериализацию этих транзакций невозможно. Обратите внима-
ние, что вторая команда UPDATE в обоих случаях обновляет не одну строку, а две.


Достарыңызбен бөлісу:
1   ...   206   207   208   209   210   211   212   213   ...   256




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет