UPDATE 1
SELECT * FROM aircrafts_tmp WHERE aircraft_code = 'SU9';
aircraft_code |
model
| range
---------------+---------------------+-------
SU9
| Sukhoi SuperJet-100 | 3100
(1 строка)
Начнем транзакцию на втором терминале (все, что происходит на втором терминале,
показано на сером фоне):
BEGIN;
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM aircrafts_tmp WHERE aircraft_code = 'SU9';
aircraft_code |
model
| range
---------------+---------------------+-------
SU9
| Sukhoi SuperJet-100 | 3000
(1 строка)
Таким образом, вторая транзакция не видит изменение значения атрибута range,
произведенное в первой — незафиксированной — транзакции. Это объясняется тем,
что в PostgreSQL реализация уровня изоляции READ UNCOMMITTED более строгая,
чем того требует стандарт языка SQL. Фактически этот уровень тождественен уров-
ню изоляции READ COMMITTED. Поэтому будем считать эксперимент, проведен-
ный для уровня изоляции READ UNCOMMITTED, выполненным и для уровня READ
COMMITTED.
Давайте не будем фиксировать произведенное изменение в базе данных, а восполь-
зуемся командой ROLLBACK для отмены транзакции, т. е. для ее отката.
На первом терминале:
Достарыңызбен бөлісу: