Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.07;
Скачать: CL | DM;

Вниз

TIBTransaction.Commit - ?   Найти похожие ветки 

 
ghost_by ©   (2002-09-16 22:21) [0]

Объясните пожалуйста - зачем это нужно, и где и когда нужно вызывать? А то без вот этого самого Commita Blob поля не в какую не желают обновляться, хотя со всеми другими типами полей - все ОК...


 
-= Demon =-   (2002-09-17 10:36) [1]

Чтобы это понять, необходимо въехать, для чего нужны транзакции. А это такой механизм, который позволяет сохранить целостность БД и избежать возможных ошибок. Например, надо тебе провести какие-то изменения сразу с несколькими таблицами, причем эти изменения должны произойти именно СО ВСЕМИ таблицами. Т.е. если в 1-й и 2-й таблице все прошло нормально, а в 3-й произошла ошибка, то изменения из 1-й и 2-й должны быть удалены.
Все это позволяют сделать транзакции. Т.е. они ведут журнал всех произожедших изменений в БД и при необходимости могут вернуть старую информацию (провести откат).
Порядок работы следующий:
if IBTransaction.InTransaction then IBTransaction.Commit; // закрываем ранее открытую транзацию (если была, но это не есть гут)
IBTransaction.StartTransaction; // запускаем новую
// ... выполняем действия с БД .....
// если ошибка, то
IBTransaction.RollBack // производим откат
// иначе
IBTransaction.Commit; // закрываем транзакцию, подтверждая изменения.

Метод IBTransaction.StartTransaction нужно вызывать только если будут производится изменения в таблице (добавление, изменение, удаление). При выборке (SELECT) он не требуется...

Уффф! :)


 
Johnmen ©   (2002-09-17 10:57) [2]

Подкорректирую ответ...
1.IB не Oracle. Ведется не журнал, а версии записей...
2.И даже при SELECT стартовать тр-ию желательно, т.к. иначе она стартанет неявно...



Страницы: 1 вся ветка

Текущий архив: 2002.10.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
4-21310
cherepovets
2002-08-12 12:23
2002.10.07
Выключение компа


14-21207
Карелин Артем
2002-09-11 12:07
2002.10.07
А кто что курит? Нюхает? Колет?


14-21210
DeMoN-777
2002-09-11 12:50
2002.10.07
Народ у кого-нить есть компонент


1-20977
Sergey_G
2002-09-26 14:47
2002.10.07
RichEdit


1-21077
Bi
2002-09-24 12:42
2002.10.07
Как c предотвратить сообщение об ошибке.