Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Что такое транзакция ?


Автор: LSD 1.11.2004, 21:06
Транзакция - последовательность взаимосвязанных действий, рассматриваемое как единое целое.
Т.е. при открытии транзакцию,  предполагается что все последующие действия должы быть выполнены, либо не выполнено ни одно. Например тебе нужно в 10 базах изменить значение некоторого поля, причем это изменение должно быть выполнено либо для всех десяти, либо не выполнено совсем. Твои действия(пример для ADS и С++Builder)
Код
AdsConnection->BeginTransaction();//открытие транзакции
try
{
 AdsTable1->Edit();
 AdsTable1->FieldByName("abc")->AsString = "qwerty";
 AdsTable1->Post();
 ......
 AdsTable10->Edit();
 AdsTable10->FieldByName("zxc")->AsString = "jfhf";
 AdsTable10->Post();
 AdsConnection->Commit();//завершение транзакции
}
catch(...)
{
 // где-то сбой, откатываем транзакцию
 AdsConnection->RollBack();//откат транзакции
}

Если произойдет сбой, например, одну из записей будет невозможно отредактировать (заблокирована другим пользователем и т.д), выполниться откат и все предыдущие записи вернутся к первоначальному состоянию.
Таким образом с помощью транзакции обеспечивается логическая целостность данных в БД 

Автор: Vyacheslav

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)