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


SELECT * FROM aircrafts_tmp



Pdf көрінісі
бет203/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   199   200   201   202   203   204   205   206   ...   256
sql osnovi yazika

SELECT *
FROM aircrafts_tmp
WHERE aircraft_code = 'SU9';
aircraft_code |
model
| range
---------------+---------------------+-------
SU9
| Sukhoi SuperJet-100 | 3300
(1 строка)
Как видно, были произведены оба изменения. Команда UPDATE во второй транзак-
ции, получив возможность заблокировать строку после завершения первой транзак-
ции и снятия ею блокировки с этой строки, перечитывает строку таблицы и потому
обновляет строку, уже обновленную в только что зафиксированной транзакции. Та-
ким образом, эффекта потерянных обновлений не возникает.
Завершим транзакцию на втором терминале, но вместо команды COMMIT воспользу-
емся эквивалентной командой END, которая является расширением PostgreSQL:
END;
COMMIT
Если вы самостоятельно проведете только что выполненный эксперимент, выбрав
уровень изоляции Read Uncommitted, то увидите, что и на этом — самом низком —
уровне изоляции эффекта потерянных обновлений также не возникает.
Для иллюстрации эффекта неповторяющегося чтения данных проведем совсем про-
стой эксперимент также на двух терминалах. На первом терминале:
BEGIN;
BEGIN
263


Глава 9. Транзакции
SELECT * FROM aircrafts_tmp;
aircraft_code |
model
| range
---------------+---------------------+-------
773
| Boeing 777-300
| 11100
763
| Boeing 767-300
| 7900
320
| Airbus A320-200
| 5700
321
| Airbus A321-200
| 5600
319
| Airbus A319-100
| 6700
733
| Boeing 737-300
| 4200
CN1
| Cessna 208 Caravan | 1200
CR2
| Bombardier CRJ-200 | 2700
SU9
| Sukhoi SuperJet-100 | 3300
(9 строк)
На втором терминале:


Достарыңызбен бөлісу:
1   ...   199   200   201   202   203   204   205   206   ...   256




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

    Басты бет