Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как удалить таблицу c помощью SQL так, что бы...


abc ©   (2003-06-03 14:52:00) 

как удалить таблицу с помощью SQL так, что бы автоинкрементное поле начиналось снова с 1 (Paradox 7.0)


Dred2k   (2003-06-04 10:57:00) [1]

SQL тут и не нужен.
Все сделает TTable.
1. Открываем старую. Затем FieldDefs.Update, IndexDefs.Update;
2. Заполняем свойства новой.
TableName := "...";
TableType := ttParadox;
TableLevel := <по вкусу>;
FieldDefs.Assign(старая.FieldDefs);
IndexDefs.Assign(старая.IndexDefs);
CreateTable;
Будет создана новая таблица, по структуре аналогичная старой (только кроме форейн-кеев, паролей и т.п.), со всеми индексами.
Затем закрываешь старую, делаешь старая.DeleteTable;
Новую закрываешь (хотя CreateTable ее и не открывал...), делаешь ей RenameTable("имя как было у старой").
Вот и все.


Sandman25   (2003-06-04 10:26:00) [2]

kaif © (04.06.03 00:20)

Зачем нужно удалять записи SQL, если все равно планируется пересоздать таблицу? DROP TABLE работает и для непустой таблицы.


kaif   (2003-06-04 00:20:00) [3]

Извлеки всю таблицу в TTable.FieldDefs (программно). Затем используй TTable.CreateTable. Если конечно, у тебя нет foreign key на эту таблицу. Индексы тоже можно runtime создать через методы TTable.
Если ты думаешь, что DatabaseDesktop делает что-то более мудрое, то это не так. Вполне можно такое реализовать с помощью одного компонента TTable. И быстрее будет, чем данные делетировать с помощью SQL. Все равно SQL этот по одной записи все удалять будет.


Anatoly Podgoretsky   (2003-06-03 16:50:00) [4]

Это противоречит понятию AutoIncrement, у тебя уже получается не Auto и не Increment.
Только созданием новой таблицы.


sniknik   (2003-06-03 16:19:00) [5]

> заного делать не вариант, десктопом создавалась, 90 полей,
сделать новую
select * into ... from ... where 1=2
> остался со своей структурой полей

а старую удалить. (извинятся если это Local SQL не буду, сам не указывает)


stone   (2003-06-03 16:18:00) [6]

СУБД ????


> заного делать не вариант, десктопом создавалась, 90 полей


Предпложительно Paradox

Попробуй EmptyTable


abc   (2003-06-03 16:01:00) [7]

заного делать не вариант, десктопом создавалась, 90 полей,
подумай сам
даже если удались все записи, то автоинкремент начнётся не с 1, а с текщего значения, но всё таки надо, что бы файл остался со своей структурой полей


Sandman25   (2003-06-03 15:12:00) [8]

Удалите таблицу и сделайте ее заново.
Если в ней есть данные, то вопрос не имеет смысла.


Соловьев   (2003-06-03 15:01:00) [9]

удалить все записи? или таблицу? ты определись.


Наверх

Титульная страница Поиск, карта сайта Написать письмо