![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дабовление поля в существующую таблицу. [D6, Paradox]
Sollar © (2003-12-25 18:38:00)
Здравствуйте, уважаемые мастера!
У меня возникла такая ситуация. В существующую таблицу Paradox (существуют, например, след. поля: ID(Autoincriment), STREET (Alpha 50)) необходимо добавить поле (IDCITY(LongInt)) из моей программы. В DataBase Desktop эта операция проста. Подскажите как это сделать из программы (пример)?
Sollar (2003-12-26 18:07:00) [1]
В БД действительно возникла необходимость модификации набора полей таблицы. Такой подход как создание новой таблицы и копирование из старой таблицы всех записей с соблюдением значения автоинкриментного поля не является хорошим. Спасибо за приведенные примеры и ссылочку на библиотеку. Буду пробовать. 29-го числа напишу, что получилось.
LaidBack (2003-12-26 15:12:00) [2]
> upgrade программы. Программа при запуске проверяет наличие
> данного поля, и если его нет, то добавляет его и справочник
> городов. ИМХО.
Как раз это и делает TDbCheck из DegisyDb, там проверяются таблицы в Run-Time с шаблоном, зашитым в exe, и если что-то отличается, то структура подгоняется под шаблон, без потери данных...ну если только не удалять нужно поле :)
Sandman25 (2003-12-26 11:34:00) [3]
[6] Val © (26.12.03 11:30)
Согласен. Подождем автора...
Val (2003-12-26 11:30:00) [4]
>Sandman25 © (26.12.03 11:26) [5]
спасибо, я понимаю, зачем это может использоваться, в принципе, я просто уточняю у автора именно по данному вопросу, м.б. он запутался с задачей...
Sandman25 (2003-12-26 11:26:00) [5]
[4] Val © (26.12.03 11:06)
upgrade программы. Программа при запуске проверяет наличие данного поля, и если его нет, то добавляет его и справочник городов. ИМХО.
Val (2003-12-26 11:06:00) [6]
Остается вопрос о смысле изменения ддл с клиентского приложения для данного случая.
Sandman25 (2003-12-26 11:02:00) [7]
Точно.
Или можно так:
alter table t1 add idcity integer
update table t1 set idcity = 1 where street like "%Москва%"
update table t1 set idcity = 2 where street like "%Санакт-Петербург%"
update table t1 set idcity = 3 where idcity is null
alter table t1 modify idcity integer not null
Tester (2003-12-25 19:00:00) [8]
все так, только если в таблице уже есть данные надо ставить null или сделать значение по умолчанию
Sandman25 (2003-12-25 18:53:00) [9]
Query.Sql.Add("alter table t1 add idcity integer not null");
Query.ExecSQL