Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Физическое удаление записей в таблице?

2.1K
17 мая 2007 года
FreeWay
142 / / 03.05.2007
Всем привет!!

Такой трабл:

я ставлю фильтр на таблицу, в результате выводятся необходимые мне строки, дальше эти строки необходимо удалить, циклом бежать по всем строкам нет смысла, так как на удаление 85 000 строк надо где то 84 часа ))))

подскажите как удалить очень много строк, которые отфильтрованы ?
497
17 мая 2007 года
IL84
267 / / 24.04.2003
Засунуть фильтр в SQL запрос и удалить.
2.1K
17 мая 2007 года
FreeWay
142 / / 03.05.2007
Цитата: IL84
Засунуть фильтр в SQL запрос и удалить.



а что если делать через запрос то строки физически будут удалены???
потомучто если делать стандартно допустим так : Table1->EmptyTable();
то реально записи не удаляются, а только помечаются как удаленные((((((

497
17 мая 2007 года
IL84
267 / / 24.04.2003
Во-первых, что за БД? Во-вторых запрос вида
 
Код:
DELETE FROM table WHERE ....

удалит записи какие надо. Про физическое удаление ничего сказать не могу, т.к. все БД работают по разному: кото-то помечает как удаленные, кто-то удаляет запись, но выделенное под нее место оставляет и т.д.
2.1K
17 мая 2007 года
FreeWay
142 / / 03.05.2007
Цитата: IL84
Во-первых, что за БД? Во-вторых запрос вида
 
Код:
DELETE FROM table WHERE ....

удалит записи какие надо. Про физическое удаление ничего сказать не могу, т.к. все БД работают по разному: кото-то помечает как удаленные, кто-то удаляет запись, но выделенное под нее место оставляет и т.д.



я работаю в
FoxPro
через
BDE


странно написал запрос:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("DELETE FROM PROV.DBF");
Query1->SQL->Add("WHERE odat='27.04.2007'");
Query1->Open();
Query1->Close();

он правильный, но выбивает при выполнении ошибку operator/operand type mismatch .'.
что за бок непонятно ((((((

497
17 мая 2007 года
IL84
267 / / 24.04.2003
Возможно что-то с датой. В Oracle например строка '27.04.2007' не канает, надо приводить к дате через TO_DATE().
263
17 мая 2007 года
koltaviy
816 / / 16.12.2004
Много раз уже обсуждалась тема про дату в SQL запросе!!
Универсальный, ИМХО, способ - использование параметров.
А, вообще, я бы написал так:
 
Код:
DELETE FROM PROV.DBF WHERE odat = #27/04/2007#
247
18 мая 2007 года
wanja
1.2K / / 03.02.2003
И еще, Open годится тоько для запросов, возвращающих строки, а для остальных - ExecSQL
2.1K
24 мая 2007 года
FreeWay
142 / / 03.05.2007
вот работающий код:

void __fastcall TForm1::Button7Click(TObject *Sender)
{


while (!Table1->Eof)
{
Table1->Edit();
Table1->Delete();
Table1->Edit();
Table1->Post();
if (Table1->Eof){break;}
}
}

работает медленно ((( (у меня база 29 метров), но зато работает, программно паковать таблицу не получилось, поэтому открываю таблицу в Database Desktop нажимаю паковать и сохранить!

темма закрыта!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог