Доступ к изменениям в базе данных во время выполнения транзакции - PullRequest
0 голосов
/ 17 марта 2011

Я разрабатываю приложение .NET, которое взаимодействует с базой данных.В методе я начинаю транзакцию SQL и изменяю некоторые значения в table1, после того, как я закончу с изменениями (но еще не зафиксировал транзакцию), я запускаю Threading.Thread для обновления значений в table2данные из table1.

Будет ли этот поток читать измененные значения?Или он загрузит данные, как это было до начала транзакции?

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Использование уровней изоляции транзакции RepeatableRead или ReadUncommitted для транзакции во втором потоке позволит вам прочитать незафиксированные данные из таблицы 1.

Дополнительная информация об уровнях изоляции транзакций:

Перечисление IsolationLevel

Установка уровня изоляции транзакции (Transact-SQL)

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

2 голосов
/ 17 марта 2011

Это зависит от того, использует ли второй поток то же соединение / сеанс, в котором была запущена транзакция.Если это так, то он может видеть изменения, сделанные до сих пор во время этой транзакции.Если это другое соединение, оно не будет учитывать эти изменения, пока они не будут зафиксированы.

...