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

Вниз

MySQL. Работа с двумя таблицами, блокировка одной из них.   Найти похожие ветки 

 
Aldor ©   (2004-03-05 19:37) [0]

Странный exception вылезает при следующей ситуации:
 Имеются две таблицы (Буфер и Архив). Буфер надо заблокировать, считать все данные, записать их в Архив (он не блокируется), затем Буфер надо полностью очистить.

 
  ExecSQLInner("LOCK TABLES " + <BufferTableName> +
                " LOW_PRIORITY WRITE");
   try
     { Читаем данные из Буфера }
     DataSet := OpenSQLInner("SELECT * FROM " + <BufferTableName>)      
     
     { Пишем их в Архив. StoreQuery - запрос "INSERT" }
     ExecSQLInner(StoreQuery); // здесь ошибка (см. ниже)
     
     { Очищаем Буфер }
     ExecSQLInner("DELETE FROM " + <BufferTableName>);
   finally      }
     ExecSQLInner("UNLOCK TABLES");
   end;
 


ExecSQLInner есть процедура:

 SQLQueryInner.SQL.Text := Query;
 SQLQueryInner.ExecSQL;

 
 При попытке записать данные в архив (строка ExecSQLInner(StoreQuery);) вылезает ошибка
"<ArchiveTableName> was not blocked with LOCK TABLES"

 Если конкретнее, то на строке
 SQLQueryInner.ExecSQL; процедуры ExecSQLInner.

 P.S. Если заблокировать обе таблицы, все нормально.


 
Aldor ©   (2004-03-05 19:43) [1]

Некоторые дополнения:
 процедура OpenSQLInner:
 
 function TfrmServerMain.OpenSQLInner(Query: string): TDataSet;
 begin
   SQLQueryInner.SQL.Text := Query;
   SQLQueryInner.Open;
   Result := SQLQueryInner;
 end;
 

 StoreQuery из строки, где ошибка тоже есть функция:
 function StoreQuery: string;, в которой читается все содержимое DataSet: TDataSet


 
Еще дополнения   (2004-03-05 19:46) [2]

Извиняюсь, допустил ляп:
 после finally символ "}" считать недействительным.



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

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

Наверх




Память: 0.47 MB
Время: 0.027 c
14-1078577675
Julia
2004-03-06 15:54
2004.04.04
Объявление


14-1078946265
Maxim Vetera
2004-03-10 22:17
2004.04.04
ПППП!


3-1078400416
nuinu
2004-03-04 14:40
2004.04.04
Установка Interbase


3-1078394011
vovchik
2004-03-04 12:53
2004.04.04
универсальная строка подключния


4-1074627646
Iron Maiden
2004-01-20 22:40
2004.04.04
Как убрать мышь