Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.007 c
1-1277897030
Tangar83
2010-06-30 15:23
2011.12.18
Ошибка при использовании TWebBrowser


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


2-1315465617
user1987
2011-09-08 11:06
2011.12.18
Вывод текста на рабочий стол


2-1315739001
я
2011-09-11 15:03
2011.12.18
ftGraphic, DBGrid,ClientDataSet,DataSource


15-1314785463
Доменик
2011-08-31 14:11
2011.12.18
Помогите с запросом




   Наверх