2015-12-10 4 views
0

Я хочу воссоздать анонс грязной записи с двумя независимыми транзакциями. Я запустил терминал дважды и подключился как к моей базе данных. Я начал транзакцию с командой start transaction; в обоих. Затем я обновил одну информацию в первом окне терминала, и это то, что мне показалось: Rows matched: 1 Changed: 1 Warnings: 0. После выбора всех данных в этой таблице было изменено. Но когда я попытался показать измененные данные select * from adress; во втором окне терминала, это не показало мне изменения, кроме старых данных.начать две независимые транзакции с mysql

В конце концов мне нужно доказать аномалию грязного чтения и избежать этого с правильным уровнем изоляции.

Вот два скриншота моих окон терминала.

Сделка 1:

transaction 1 http://i64.tinypic.com/mcapo6.png

Сделка 2:

transaction 2 http://i65.tinypic.com/o0tcwg.png

Что я делаю неправильно?

Спасибо за помощь, Робин

+0

Вы совершили транзакцию в первом терминале? –

+0

Я просто попробовал его с фиксацией в первом терминале. Второй терминал по-прежнему показывает старые данные. Только когда я фиксирую второй терминал, данные одинаковы. Означает ли это также, что обе транзакции закончились? –

ответ

0

Вы должны зафиксировать изменения на вашей первой транзакции

https://dev.mysql.com/doc/refman/5.7/en/commit.html

Идея сделки является, чтобы позволить вам сделать серию операций, либо все должно быть успешным, либо все не должно произойти.

Надеюсь, что это поможет.