// Получить вновь сгенерированный идентификатор.
  empID = (int)cmd.Parameters["@EmployeeID"].Value;
  HtmlContent.Text += "New ID: " + empID.ToString();
)
finally
{
  con.Close();
}

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

Транзакции

Транзакция — это набор операций, который должен либо выполниться успешно, либо не выполниться, как единое целое. Целью транзакции является гарантия того, что данные всегда находятся в корректном, согласованном состоянии. Например, рассмотрим транзакцию, которая передает $1000 со счета А на счет В. Ясно, что здесь присутствует две операции:

Предположим, что приложение успешно выполнило шаг 1, но из-за какой-то ошибки шаг 2 завершился сбоем. Это ведет к несогласованию данных, поскольку общая сумма денег в системе теперь не точна. Пропало, ни много ни мало, $1000.

Транзакции позволяют избежать проблем подобного рода за счет того, что гарантируют, что изменения будут подтверждены в источнике данных только в том случае, если все шаги пройдут успешно. Поэтому в данном примере, если шаг 2 сорвется, то изменения, выполненные на шаге 1, не будут подтверждены в базе данных. Это гарантирует, что система останется в одном из двух корректных состояний — начальном (когда деньги не переведены), либо конечном (когда деньги дебетованы с одного счета и кредитованы на другой).

Транзакции характеризуются четырьмя свойствами, известными под названием свойств ACID. ACID — аббревиатура, представляющая следующие концепции:

предыдущая    следующая страница   оглавление

324

Hosted by uCoz