Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
ВнизТранзакции. откат не работает. Найти похожие ветки
← →
Наташа (2003-03-22 08:42) [0]Уважаемые Мастера Delphi! Помогите пожалуйста советом. Начинаю транзакцию и
выполняю вызовы ХР. Сначала ХП вставки общих данных о заказе List_Order,
затем ХП вставки данных о самом заказе orders
затем Commit или Rollback. В случае ошибки параметрах для ХП Вставки в сам заказ orders
выдает сообщение об откате, но при этом информация в List_order вставляется.
IBTransaction.StartTransaction;
Try
вызов ХП вставки в List_Order;
вызов Хп вставки в Orders;
IBTransaction.Commit; ShowMessage("Выполнено")
Except
IBTransaction.Rollback;
ShowMessage("откат");
End;
В чем может быть дело? Заранее благодарна.
← →
zacho (2003-03-22 09:04) [1]В какой-то из версий IB был баг, при котором если в ХП был INSERT и EXCEPTION, INSERT не откатывался. Возможно у тебя именно этот случай. Попробуй перейти на более старшую версию IB, а еще лучше - FB.
P.S. Описание бага было, кажется, где-то на www.ibase.ru
← →
Наташа (2003-03-22 09:08) [2]А что такое "баг"?
← →
zacho (2003-03-22 09:14) [3]
> Наташа © (22.03.03 09:08)
:-)
"баг" (англ. bug) - ошибка в коде. В данном случае - ошибка в коде IB
← →
Наташа (2003-03-22 09:24) [4]Большое спасибо и за совет и за разъяснения!
← →
Olivka (2003-03-22 13:56) [5]У меня недавно была та же проблема. Хотя я использую FIBplus для доступа к ИБ, но все решалось тем, что транзакция откатывалась правильно, а действия не отменялись, потому что это оказывались разные транзакции. Выход был в том, чтобы выполнять вызовы Select (хп и другие операторы) с помощью компонента Query, а не других компонент. Тогда все действия были в контексте именно этой начатой транзакции. Если объясняю непонятно - спрашивайте. Вы не указали как вы вызываете свои хп.
← →
Наташа (2003-03-22 14:10) [6]Вызов происходит следующим образом
IBTransaction.StartTransaction;
Try
With SPInsert_LO do
begin
ParamByName("iDate").AsDate:=Date;
ParamByName("iManager").AsString:=fLogin.edPassword.Text;
ParamByName("iC_id").AsInteger:=CodCl;
и .т.д. другие параметры
ExecProc;
NumberOrder:=ParamByName("rLO_id").AsInteger;
end;
With SPInsertOrder do
begin
ParamByName("iLO_Id"):=NumberOrder;
ParamByName("iPr_Id").AsInteger:=Table["Pr_Id"];
ParamByName("iCount").AsInteger:=Table["Counts"];
и.т.д. другие параметрыж
ExecProc;
end;
IBTransaction.Commit; ShowMessage("Выполнено")
Except
IBTransaction.Rollback;
ShowMessage("откат");
End;
Тексты ХП , если требуется
SPInsert_LO
rLO_Id:=gen_Id(LO_Id_Gen,1);
Insert Into List_Order(Date, Manager, C_Id ....)
Values(:iDate,:iManager, :iC_Id...)
SPInsert_Order
Insert Into Orders (LO_Id, Pr_id, Counts... )
Values (:iLO_Id, :iPr_Id, :iCount)
← →
Olivka (2003-03-22 14:18) [7]что такое у тебя SPInsert_LO
← →
Наташа (2003-03-22 14:30) [8]SPInsert_LO это название компонента IbStorecProc, связанного с ХР вставки в list_order
← →
Olivka (2003-03-22 14:41) [9]Сравнивать с FIBplus конечно, особо нельзя, а попробуй взять компоненты IBquery и выполнять запросы и вызовы хп через него. И не забудь в свойстве transaction этого компонента указать свой компонент транзакцию. Еще запусти SQL-монитор какой-нибудь и проверь логи. Там будут номера транзакций. так вот - все действия должны проходить под одним номером транзакции и она же должна в случае чего подтверждаться или откатываться
← →
zacho (2003-03-22 15:03) [10]Все-таки попробуй поставить FB вместо IB, или более свежую версию IB. Кстати, напиши какой версией IB ты пользуешся.
А IBX или FIBPlus - особой разницы в твоем случае нет, идеология работы и с тем, и с тем одинаковая, все равно все они родились из FIBC
← →
Наташа (2003-03-22 15:07) [11]IB6
← →
zacho (2003-03-22 15:33) [12]
> Наташа © (22.03.03 15:07)
IB 6.0 ? Тогда выбрось это глюкало и ставь хотя бы IB 6.5. А лучше, все-таки, FB. Посмотри www.ibase.ru, там есть информация по разным версиям IB и клонов.
← →
Наташа (2003-03-22 19:17) [13]Всем Большое Спасибо!!!
← →
zacho (2003-03-22 19:47) [14]
> Наташа © (22.03.03 19:17)
Так проблема все-таки решилась или нет ? Любопытно, однако :)
← →
Наташа (2003-04-03 22:47) [15]Проблема решилась.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c