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


WHERE aircraft_code = 'CR2'



Pdf көрінісі
бет217/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   213   214   215   216   217   218   219   220   ...   256
sql osnovi yazika

WHERE aircraft_code = 'CR2';
283


Глава 9. Транзакции
Очевидно, что сохранится только одно из значений атрибута range. Можно ли
говорить, что в такой ситуации имеет место потерянное обновление? Если оно
имеет место, то что можно предпринять для его недопущения? Обоснуйте ваш
ответ.
Для получения дополнительной информации можно обратиться к фундамен-
тальному труду К. Дж. Дейта, а также к полному руководству по SQL Дж. Гроффа,
П. Вайнберга и Э. Оппеля. Библиографические описания этих книг приведены
в списке рекомендуемой литературы.
4. На уровне изоляции транзакций Read Committed имеет место такой феномен,
как чтение фантомных строк. Такие строки могут появляться в выборке как в ре-
зультате добавления новых строк параллельной транзакцией, так и вследствие
изменения ею значений атрибутов, участвующих в формировании условия вы-
борки. Рассмотрим пример, иллюстрирующий вторую из указанных причин.
На первом терминале организуем транзакцию. Она будет иметь уровень изоля-
ции Read Committed:
BEGIN;
BEGIN
SELECT *
FROM aircrafts_tmp
WHERE range > 6000;
aircraft_code |
model
| range
---------------+-----------------+-------
773
| Boeing 777-300 | 11100
763
| Boeing 767-300 | 7900
319
| Airbus A319-100 | 6700
(3 строки)
На втором терминале организуем транзакцию и обновим одну из строк табли-
цы таким образом, чтобы эта строка стала удовлетворять условию отбора строк,
заданному в первой транзакции.
BEGIN;
BEGIN
284


Контрольные вопросы и задания
UPDATE aircrafts_tmp
SET range = 6100
WHERE aircraft_code = '320';
UPDATE 1
Сразу завершим вторую транзакцию, чтобы первая транзакция увидела эти из-
менения.


Достарыңызбен бөлісу:
1   ...   213   214   215   216   217   218   219   220   ...   256




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

    Басты бет