Учебно-практическое пособие москва 2017 ббк


END; COMMIT Вот что получилось в результате: SELECT * FROM aircrafts_tmp



Pdf көрінісі
бет210/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   206   207   208   209   210   211   212   213   ...   243
Байланысты:
Язык SQL. Базовый курс

END;
COMMIT
Вот что получилось в результате:
SELECT * FROM aircrafts_tmp;
aircraft_code |
model
| range
---------------+---------------------+-------
773
| Boeing 777-300
| 11100
763
| Boeing 767-300
| 7900
SU9
| Sukhoi SuperJet-100 | 3000
320
| Airbus A320-200
| 5700
321
| Airbus A321-200
| 5600
319
| Airbus A319-100
| 6700
733
| Boeing 737-300
| 4200
CN1
| Cessna 208 Caravan | 2100
CR2
| Bombardier CRJ-200 | 1900
(9 строк)
Задание: модифицируйте сценарий выполнения транзакций, а именно: в пер-
вой транзакции вместо фиксации изменений выполните их отмену с помощью
команды ROLLBACK и посмотрите, будет ли удалена строка и какая конкретно.
3.* Когда говорят о таком феномене, как потерянное обновление, то зачастую в ка-
честве примера приводится операция UPDATE, в которой значение какого-то
атрибута изменяется с применением одного из действий арифметики. Напри-
мер:
220


UPDATE aircrafts_tmp SET range = range + 200
WHERE aircraft_code = 'CR2';
При выполнении двух и более подобных обновлений в рамках параллельных
транзакций, использующих, например, уровень изоляции READ COMMITTED,
будут учтены все такие изменения (что и было показано в тексте главы). Оче-
видно, что потерянного обновления не происходит.
Предположим, что в одной транзакции будет просто присваиваться новое зна-
чение, например, так:
UPDATE aircrafts_tmp SET range = 2100 WHERE aircraft_code = 'CR2';
А в параллельной транзакции будет выполняться аналогичная команда, напри-
мер:
UPDATE aircrafts_tmp SET range = 2500 WHERE aircraft_code = 'CR2';
Очевидно, что сохранится только одно из значений атрибута range. Можно ли
говорить, что в такой ситуации имеет место потерянное обновление? Если оно
имеет место, то что можно предпринять для его недопущения? Обоснуйте ваш
ответ.
Для получения дополнительной информации можно обратиться к фундамен-
тальному труду К. Дж. Дейта, а также к полному руководству по SQL Дж. Гроффа,
П. Вайнберга и Э. Оппеля. Библиографические описания этих книг приведены в
списке рекомендуемой литературы.
4. На уровне изоляции транзакций READ COMMITTED имеет место такой фено-
мен, как чтение фантомных строк. Такие строки могут появляться в выборке как
в результате добавления новых строк параллельной транзакцией, так и вслед-
ствие изменения ею значений атрибутов, участвующих в формировании усло-
вия выборки. Рассмотрим пример, иллюстрирующий вторую из указанных при-
чин.
На первом терминале организуем транзакцию с уровнем изоляции READ
COMMITTED:


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




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

    Басты бет