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

Ваш аккаунт

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

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

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

Физическое удаление данных из таблицы БД

1.9K
03 марта 2003 года
OS17
40 / / 09.12.2002
Такая задачка:
При удалении записей из таблицы БД они удаляются не физически, а логически помечаются удаленными. Т.е. при большом количестве операций вставки удаления с БД таблица разрастается. И это понятно.

В Database Desktop есть опция "Pack Table", которая позволяет физически удалить неиспользуемые записи, оставив неудаленные (в отличие, например, от метода EmptyTable() компонента TDataSet, который удаляет все).

Так вот суть вопроса: как сделать то же самое только из кода программы?

Заранее благодарен.

P.S. Естественно без извращений типа создать новую таблицу того же типа, в которую скопировать содержимое старой, а старую удалить (этакая рокировка).
295
04 марта 2003 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by OS17
Такая задачка:
При удалении записей из таблицы БД они удаляются не физически, а логически помечаются удаленными. Т.е. при большом количестве операций вставки удаления с БД таблица разрастается. И это понятно.

В Database Desktop есть опция "Pack Table", которая позволяет физически удалить неиспользуемые записи, оставив неудаленные (в отличие, например, от метода EmptyTable() компонента TDataSet, который удаляет все).

Так вот суть вопроса: как сделать то же самое только из кода программы?

Заранее благодарен.

P.S. Естественно без извращений типа создать новую таблицу того же типа, в которую скопировать содержимое старой, а старую удалить (этакая рокировка).


Если ты используешь Paradox или что-то подобное, то не знаю. ДЛя SQL БД существует Backup-Restore.
Но лучше всего это делать ручками с резервным копированием а не из программы - меньше шансов получить упавшую базу.

1.9K
04 марта 2003 года
OS17
40 / / 09.12.2002
Понятно, но это ответ с точки зрения администратора базы данных, а скорее, наверное, не программиста. Хотя я могу и ошибаться.
Я понимаю, что в SQL есть такое средство. Если бы я работал с солидной БД на том же Oracle, то там, например, пришлось бы писать что то вроде процедуры PL/SQL.
В конце концов резервирование всегда можно сделать и из программы. Кроме того резервирование не всегда возможно. Представь таблицу на мегабайт 200-300. А если вопрос времени не маловажен. А если их 10 и не к каждой можно подлезть со средствами администрирования, а учить USERов дело неблагодарное?
К тому же любое встороенное средство, в конце то концов есть тоже программа.
1.9K
05 марта 2003 года
ILS
100 / / 28.01.2003
Есть такая функция: DbiDoRestructure
причем в во входном параметре нужно указать
TblDesc.bPack = true;
1.9K
05 марта 2003 года
ILS
100 / / 28.01.2003
хотя, она все равно создает временный файл (и не думаю что он будет меньшего размера) - точно также как это делает Desktop (очень даже подозреваю что он выполнен на nой же библиотеке Dbi функций)
1.9K
05 марта 2003 года
OS17
40 / / 09.12.2002
Да посмотрел Help, действительно функция здоровская, даже слюнки потекли от открывающихся возможностей. НО! У меня почему то у не получается ее использовать. Программа проглатывает код без запинки, но с таблицей ничего не происходит.

Может быть кинешь какой нибудь пример.

И еще в стандартном примере Helpa на эту функцию есть упоминание некой функции Chk(), которая компилятором не переваривается.

Вообщем резюме: чего то не идет, хотя судя по всему должно! Причина мне не понятна. Если только дело в прокладке между стулом и клавиатурой.
429
06 марта 2003 года
Slon
78 / / 20.01.2000
Попрробуй это.
Работаю с DBase. У меня проходит.
---
Table1->Close();
Table1->Exclusive=true;
Table1->Open();
DbiPackTable(Table1->DBHandle,Table1->Handle, NULL,NULL,true);
---
1.9K
06 марта 2003 года
ILS
100 / / 28.01.2003
для ОS17 - Вышли мыло
1.9K
06 марта 2003 года
OS17
40 / / 09.12.2002
Мой e-mail: [EMAIL=os17@mail.ru]os17@mail.ru[/EMAIL] .
1.9K
06 марта 2003 года
OS17
40 / / 09.12.2002
Не хочет выполнять и такой код. Пересовокуплял его в различных позах с тем, что знал - бестолку. Но вот вопрос : нужно ли открывать БД и смысл ее открытия в эксклюзивном режиме именно для этого случая. Далее : чем отличаетс DBHandle от просто Handle.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог