Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизПроблема с удалением строк в базе данных Найти похожие ветки
← →
Святослав © (2006-01-11 01:06) [0]Программно удаляю строки из БД
Query1:=TQuery.Create(nil);
Query1.DatabaseName:=Path;
Query1.SQL.Clear;
Query1.SQL.Add("delete from info where pole=znachenie");
Query1.ExecSQL;
Query1.ApplyUpdates;
Query1.Destroy;
Выскакивает ошибка «Dataset not in edit or insert», подскажите где искать и как с ней бороться???
Если сделать так
Query1:=TQuery.Create(nil);
Query1.DatabaseName:=Path;
Query1.SQL.Clear;
Query1.SQL.Add("delete from info where pole=znachenie");
Query1.ExecSQL;
//Query1.ApplyUpdates;
Query1.Destroy;
Все работает, но физически строки из таблицы не удаляются, сколько база занимала столько и занимает
← →
sniknik © (2006-01-11 08:17) [1]ApplyUpdates это вообще "не из той оперы", а размер... ищи в форуме про упаковку таблиц
← →
Johnmen © (2006-01-11 08:54) [2]кстати, Clear тоже не из этой...
← →
Johnmen © (2006-01-11 08:57) [3]кстати-2, Destroy тоже не из этой...
← →
Desdechado © (2006-01-11 13:13) [4]записи удаляются, поскольку тебе они недоступны
а проблемы физического хранения - не твоя забота, а движка БД
← →
Anatoly Podgoretsky © (2006-01-11 14:05) [5]Кстати и возможные утечки тоже не из этой.
← →
Johnmen © (2006-01-11 14:18) [6]>Anatoly Podgoretsky © (11.01.06 14:05) [5]
Это мне?
← →
Anatoly Podgoretsky © (2006-01-11 14:59) [7]Не тебе, а в общий поток.
А резюме стандартное - переписать все нафиг.
← →
evvcom © (2006-01-11 16:21) [8]Кстати-n (какое уж там по счету), вероятнее всего вообще ничего не удаляется.
Резюме - см. Anatoly Podgoretsky © (11.01.06 14:59) [7]
← →
0bsid © (2006-01-11 17:51) [9]ExecSQL и Free
размер базы запросто может и не меняться, но запись удалится
← →
Святослав © (2006-01-12 12:35) [10]Все дело в транзакциях, чтоб изменения вступили в силу SQL – запрос надо подтвердить, что-то вроде COMMIT WORK! Но где и как им пользоваться не знаю! если кто знает как это сделать из DELPHI под BDE подскажите!!!
Query1.ApplyUpdates по идей должен завершить транзакцию, но выскакивает матюк
← →
Desdechado © (2006-01-12 12:41) [11]если ты явно не стартовал транзакцию, то и подтверждать ее явно не надо
если стартовал, то подтверждай
если внимательно почитать справку, то ApplyUpdates просто передает изменения в клиентском датасете на сервер, а у тебя никакого клиентского датасета нет, вот и матюк
← →
Johnmen © (2006-01-12 12:41) [12]Правильно не знаешь. Транзакии к Парадоксу отношения не имеют.
Здесь ещё читани
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988623315&n=14
← →
Святослав © (2006-01-12 14:19) [13]
> Desdechado ©
> если внимательно почитать справку, то ApplyUpdates просто
> передает изменения в клиентском датасете на сервер, а у
> тебя никакого клиентского датасета нет, вот и матюк
Спасибо, помогло понять!!!
> Johnmen ©
Еще вопрос:
Можно ли послать SQL-запрос который гарантировал бы изменения и на физическом уровне или за это отвечает исключительно СУБД?
База была на 500 000 позиций, удалил до 10 000, она как занимала 100м так и занимает, теперь если добавлю еще 500 000 то она начнет плодиться, рано или поздно сожрет всю память!
Что делать?
← →
Reindeer Moss Eater © (2006-01-12 14:44) [14]Можно ли послать SQL-запрос который гарантировал бы изменения
Если бы таковой был, то его можно было бы послать.
← →
evvcom © (2006-01-12 15:05) [15]
> Можно ли послать SQL-запрос который гарантировал бы изменения
> и на физическом уровне или за это отвечает исключительно
> СУБД?
За это отвечает исключительно СУБД! В твоем случае изменения происходят на физическом уровне. Разве после удаления записей ты их продолжаешь видеть? А в качестве СУБД выступает движок BDE.
А что касаемо размера, так это нормально. Посмотри в любом инструменте, Database Desktop например, там есть поле с галочкой Pack Table. Аналогично в BDE есть функция DbiPackTable.
← →
Святослав © (2006-01-12 18:51) [16]Спасибо всем!
Буду работать дальше...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.02 c