![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как удалить таблицу 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]удалить все записи? или таблицу? ты определись.