Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.03 c