Проблема транзакции - PullRequest
       9

Проблема транзакции

3 голосов
/ 10 февраля 2011

Я использую Java и MySql в качестве базы данных.

Я запускаю несколько экземпляров приложения. Я выбираю одну запись из базы данных и в то же время после извлечения обновляю ее статус как «в процессе», чтобы другие экземпляры не могли получить доступ к этой записи.

Но что происходит, так это то, что экземпляры работают так быстро, что, когда один экземпляр обращается к одной записи, другой экземпляр также получает доступ к той же записи, прежде чем обновление будет выполнено «В процессе» первым экземпляром. Что я должен сделать, чтобы обновление также произошло до того, как другой экземпляр сможет получить к нему доступ? Я использовал conn.setTransactionIsolation(conn.TRANSACTION_READ_COMMITTED) в своем коде, но это также не помогло.

Спасибо заранее.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Вам нужен тип заявления select for update.

http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html

0 голосов
/ 10 февраля 2011

Что ж, я думаю, что решение вашей проблемы - это блок синхронизации. Есть два способа сделать это. Написать блок синхронизации или поместить этот код обновления базы данных в один метод, который синхронизируется. Таким образом, если один поток вносит изменения, другой поток не будет к нему обращаться. Для получения дополнительной информации нажмите здесь

...