Главная страница
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-1313176699
Leon-Z
2011-08-12 23:18
2011.12.18
Размер BLOB поля.


4-1219926981
tytus
2008-08-28 16:36
2011.12.18
Захват текста консольного приложения


2-1315226772
rammic
2011-09-05 16:46
2011.12.18
Получение данных из 3ds Max


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


1-1277214927
Дмитрий Белькевич
2010-06-22 17:55
2011.12.18
Почему может не работать FileExisit?