Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Транзакция и INSERT? D6, Paradox


aleks-ran ©   (2004-09-30 11:55:00) 

Уважаемые мастера, при попытке выполнения нижеприведенного кода, на выделенном блоке вываливаюсь с сообщением об ошибке: Too many record lock on table. И ругается на отсутствие в директории программы ERRORINS.DB
Если этот блок вывести за пределы транзакции то все ОК.
В таблицах Storage, ReserveStorage все поля числовые кроме Article - Alpha[18] -  Ключевое поле. (около 500 записей).
Пробовал в цикле
 INSERT INTO Storage (Article, Rest, Income, Expense, Number)
 VALUES ('Значение поля Article в ReserveStorage', 'Значение поля Rest в ReserveStorage', 0, 0, 'Значение поля Rest в ReserveStorage')
Вываливаюсь с сообщением Key Violation где-то после половины.

Подскажите, плиз в чем, возможно, причина.

begin
 with qrUpdate do begin
   Active:=False;
   dbUpdates.StartTransaction;
   try
     SQL.Clear;
     SQL.Add('DELETE FROM Storage');
     ExecSQL;

----------------------------------------------------------------------------------------------------------------------

     SQL.Clear;
     SQL.Add('INSERT INTO Storage (Article, Rest, Income, Expense, Number)');
     SQL.Add('SELECT Article, Rest, 0, 0, Rest FROM ReserveStorage');
     ExecSQL;

----------------------------------------------------------------------------------------------------------------------

     dbUpdates.Commit;
   except
     dbUpdates.Rollback;
     raise;
   end;
 end;


aleks-ran   (2004-09-30 13:20:00) [1]

Всем спасибо, прийдется перестраиваться на клиент-сервер.


Romkin   (2004-09-30 12:57:00) [2]

aleks-ran ©  (30.09.04 12:44) [1] Опытным путем :)) Есть же BDE Help, там четко написано: в транзакции допустимо менять 255 записей для Парадокса или 100 для dBase. А лучше вообще транзакции не использовать :))


Sandman25   (2004-09-30 12:49:00) [3]

Менять СУБД. Или отказаться от транзакции.


aleks-ran   (2004-09-30 12:44:00) [4]

Опытным путем установил, что ограничение на вставку 255 записей, как обойти это ограничение?


Наверх

Титульная страница Поиск, карта сайта Написать письмо