Работа с базами данных на языке C#. Технология АDO .NET. Евсеева О.Н - 121 стр.

UptoLike

Составители: 

121
try
{
//Выполняем команды, вызываем одну или несколько хранимых процедур
//Подтверждаем транзакцию
myCommand.Transaction.Commit();
}
catch(Exception ex)
{
//Отклоняем транзакцию
myCommand.Transaction.Rollback();
}
finally
{
//Закрываем соединение
conn.Close();
}
При выполнении транзакций несколькими пользователями одной базы
данных могут возникать следующие проблемы:
Dirty reads – «грязное» чтение. Первый пользователь начинает транзакцию,
изменяющую данные. В это время другой пользователь (или создаваемая
им транзакция) извлекает частично измененные данные, которые не яв-
ляются корректными.
Non-repeatable readsнеповторяемое чтение. Первый пользователь начи-
нает транзакцию, изменяющую данные. В это время другой пользователь
начинает и завершает другую транзакцию. Первый пользователь при по-
вторном чтении данных (например, если в его транзакцию входит не-
сколько инструкций SELECT) получает другой набор записей.
Phantom readsчтение фантомов. Первый пользователь начинает транзак-
цию, выбирающую данные из таблицы. В это время другой пользователь
начинает и завершает транзакцию, вставляющую или удаляющую записи.
Первый пользователь получит другой набор данных, содержащий фанто-
мыудаленные или измененные строки.
Для решения этих проблем разработаны четыре уровня изоляции тран-
закции:
Read uncommitted. Транзакция может считывать данные, с которыми рабо-
тают другие транзакции. Применение этого уровня изоляции может при-
вести ко всем перечисленным проблемам.
Read committed. Транзакция не может считывать данные, с которыми рабо-
тают другие транзакции. Применение этого уровня изоляции исключает
проблему «грязного» чтения.