Hi!
The situation. There is a table (in SQLite3), named Table1. And a query ZQuery1. Do the following:
[php]ZQuery1.SQL.Text := 'select * from table1';
ZQuery1.Open;
ZQuery1.Delete;
[/php]
So, the record is removes from both ZQuery1 and table1 (located in database).
Is it normal? How can I to delete a record from ZQuery1 only?
Thanks!
ZQuery.Delete removes a record in another table
Moderators: gto, cipto_kh, EgonHugeist
вообще-то нормально. так и должно быть.
Причем, судя по тексту удаляется та запись на которой стоит указатель. Учитывая, что запрос не содержит директиву order by, то при каждом обращении может быть произвольная запись. Может быть, если ты поставишь свойство ReadOnly Query (или что-то типа этого) то удаляться не будет. Ниоткуда. Если же тебе нужны только некоторые записи, то используй
... where field=.....
А зачем такая конструкция?
![Smile :)](./images/smilies/icon_smile.gif)
... where field=.....
А зачем такая конструкция?
У меня выбираются записи из Table1 и встают в стек на некую обработку. Обработка происходит в отдельном потоке. Так вот в качестве стека я хотел использовать ZQuery1, т.к. это самый удобный вариант. После обработки одной записи из стека она должна быть удалена - соответственно, она удалялась и из основной таблицы Table1.
Теперь сделал по-другому. Создал еще одну таблицу, в которую запросом выбираются записи из Table1. Это и есть стек. После обработки текущая запись удаляется из этой таблицы через тот же ZQuery. При этом записи в Table1 остаются нетронутыми.
Теперь сделал по-другому. Создал еще одну таблицу, в которую запросом выбираются записи из Table1. Это и есть стек. После обработки текущая запись удаляется из этой таблицы через тот же ZQuery. При этом записи в Table1 остаются нетронутыми.
Зачем, блин, хранить индекс???? И такой подход - просто издевательство. Представь, что таблица хранить 1000 записей. Пе6рвый запрос выбирает 1000, второй 999, 998... ну и т.д. Нагрузка на сервер и сеть - чумовая. FetchAll - принудительно выбирает все записи по условию запроса. А алгоритм последовательно обрабатывает выбранные записи. Потом закрываешь запрос и все, забыл про него.
И причем здесь отдельный поток? БД многозадачная.... Ой... Я работаю с PostgreSQL, может в твоем случае это не так. Я вообще с этими огрызками типа MySQL не имел дела. Задачи не те.
P.S. Ну как вариант попробуй ZTable....
И причем здесь отдельный поток? БД многозадачная.... Ой... Я работаю с PostgreSQL, может в твоем случае это не так. Я вообще с этими огрызками типа MySQL не имел дела. Задачи не те.
P.S. Ну как вариант попробуй ZTable....