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

Вниз

правильное использование транзакций   Найти похожие ветки 

 
LDV   (2011-09-08 15:15) [0]

есть функция, которая добавляет товар в указанный раздел либо разделы (определяется параметром CategoryIds). Вопрос касается использования транзакций. Стоит ли делать разделение (как у меня в коде), когда товар добавляется только в один раздел (запись только одна, использовать транзакции не имеет смысла) и когда товар добавляется в несколько разделов (тут несколько insert-запросов, использование очевидно);


function TProduct.Add(const CategoryIds: string): Integer;
var
 CategoryIdList: TStrings;
 I: Integer;
begin
 CategoryIdList := TStringList.Create;
 try
   CategoryIdList.Text := CategoryIds;
   for I := 0 to CategoryIdList.Count - 1 do
     if not IsIntegerValue(StrToInt(CategoryIdList[I])) or not
       CategoryIsValid(StrToInt(CategoryIdList[I])) then
       raise Exception.CreateRes(
         @ERROR_INVALID_VALUE_FOR_CATEGORY_IDS_PARAMETER);
   if CategoryIdList.Count > 1 then
     Database.StartTransaction;
   try
     // Insert query here
     if CategoryIdList.Count > 1 then
       Database.Commit;
   except
     if CategoryIdList.Count > 1 then
       Database.Rollback;
     raise;
   end;
 finally
   FreeAndNil(CategoryIdList);
 end;
end;


 
Ega23 ©   (2011-09-08 15:23) [1]


>  Стоит ли делать разделение

Зачем? Есть список - его и вставляем. Проверить только, чтобы Count <> 0, а остальное всё должно быть единообразно.


 
OW ©   (2011-09-08 15:50) [2]


>  всё должно быть единообразно.

+1

да даже и для одной записи можно начать транзакцию. (она все равно неявно сама начинается)
Зато заморочек меньше.



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1315609282
RAD
2011-09-10 03:01
2011.12.18
Последовательность вычисления параметров


2-1315554871
Andrey K
2011-09-09 11:54
2011.12.18
ActiveControl


15-1314592325
Дмитрий С
2011-08-29 08:32
2011.12.18
Целочисленное деление mysql и...


15-1314649794
Юрий
2011-08-30 00:29
2011.12.18
С днем рождения ! 30 августа 2011 вторник


15-1314184414
DVM
2011-08-24 15:13
2011.12.18
Посоветуйте как лучше сделать