Евгенй |
Отправлено: 28.12.2004, 22:25 |
|
Не зарегистрирован
|
Как должен выглядеть запрос на добавление поля (полей) в существующую таблицу ? Не получается правильно составить запрос, постоянно вылетает ошибка... Подскажите. |
|
AVC |
Отправлено: 29.12.2004, 08:58 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Alter table "Схема"."Таблица" Add (имя_поля тип ограничения)
Вам это действительно нужно? Это, обычно, настолько редкая операция что проще использовать какое либо средство управления вашей БД. |
|
Евгений |
Отправлено: 03.01.2005, 21:25 |
|
Не зарегистрирован
|
Спасибо, бубу пробовать. |
|
Евгений |
Отправлено: 07.01.2005, 17:08 |
|
Не зарегистрирован
|
Запрос выглядит следующим образом:
ALTER TABLE 12345 ADD (L1 float)
При выполнении запроса вылетает ошибка 'Ошибка синтаксиса при определении поля'. Как всё таки с этим справиться ? |
|
Guest |
Отправлено: 07.01.2005, 23:38 |
|
Не зарегистрирован
|
А что за база данных ?
Есть ли в ней тип поля float ? |
|
Евгений |
Отправлено: 08.01.2005, 21:35 |
|
Не зарегистрирован
|
С добавлением поля разобрался. Не надо ставить круглые скобки и тогда всё получается.
Но вот теперь возникла задача в переименовании поля. Каким запросом это можно сделать ? |
|
AVC |
Отправлено: 10.01.2005, 09:35 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE | задача в переименовании поля. Каким запросом это можно сделать ? |
Очень зависит от сервера
Sybase: ALTER TABLE [ owner .]table-name RENAME column-name TO new-column-name
Если отдельной команды нет то можно так:
создается новое поле, копируются данные, старое убивается.
Еще раз подумайте Вам действительно это нужно? Это не просто редкая, но еще и опасная операция. После неё требуется пересмотр всех элементов базы и скриптов клиента. Имя (поля, таблицы, представления и т.д.) — это единственное, что однозначно идентифицирует объект. |
|
Евгений |
Отправлено: 10.01.2005, 16:02 |
|
Не зарегистрирован
|
Знаю, что эта процедура редко используется, но сейчас это нужно.
Подключаюсь через ADO. База MS Access.
Попробовал приведённый Вами SQL запрос — не вышло, ошибка синтаксиса. Как быть ? |
|
avc* |
Отправлено: 10.01.2005, 16:57 |
|
Не зарегистрирован
|
Вариант 2 работает всегда. |
|
Евгений |
Отправлено: 11.01.2005, 21:50 |
|
Не зарегистрирован
|
Задача состоит в следующем: в таблице создаются поля с именами A1, A2, A3, ..., A10, ... по порядку. Количество полей может быть произвольным. Затем из этой таблицы удаляется, например, поле А3. После чего в таблице остаются поля А1, А2, А4, ..., А10, ... т.е. один номер как бы пропущен. После процедуры удаления мне необходимо привести таблицу к виду А1, А2, А3, ... , т.е. поля с именем А4 и выше переименовать на поля с именем на 1 меньше, чтобы имена опять следовали друг за другом. А1, А2, А3 и т.д.
Поэтому с процедурой копирования можно решить проблему эту, но получится довольно громоздко...
Но всё равно спасибо за помощь и совету ! |
|
Bond |
Отправлено: 12.01.2005, 01:58 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 142
|
Очень все как-то намудрено. Можно поля вообще не трогать, а просто переносить значения столбцов. Ничего не убивая, не переименовывая и не создавая.
|
|
full_lamer |
Отправлено: 12.01.2005, 08:59 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
есть проще вариант... заведи вторую таблицу где веди учет какое поле удалено и какое оно имеет имя. и потом просто делать два обращения вначале к таблице имен потом к нужной таблице. тоже несколько громоздко — зато безболезнено. но это мое мнение.
|
|
AVC |
Отправлено: 12.01.2005, 10:00 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Совершенно не понимаю такой постановки задачи (переименовывание столбцов после удаления)
Согласен с full_lamer. Мне тоже это кажется наиболее разумным решением.
А вообще для SQL характерно очень легкое переименование полей использованием конструкции as
Например Select A10 as A1 — вот вы и переименовали и все запросы более высокого уровня будут видеть данные колонки A10 под именем A1
Разберитесь вам нужно физическое переименовывание или логическое.
PS. Раз вы столкнулись с такой проблемой, то скорее всего у вас плохо проработана структура базы.
Отредактировано AVC — 12/01/2005, 10:05 |
|
Евгений |
Отправлено: 12.01.2005, 22:57 |
|
Не зарегистрирован
|
Проблема вся в том, что есть написанная программа (не мной), которая может обрабатывать таблицу с определённой структурой. Математический аппарат, при помощи которого происходит обработка, неизвестен, т.е. свой софт написать тоже не выходит. Поэтому моя задача заключается в том, чтобы привести таблицу к требуемому виду. Вот и всё.
Есть конечно вариант такой: создать свою таблицу с нужной структурой и записать туда данные из старой таблицы. Придётся видимо делать так, хотя это сопряжено с дополнительными проблемами.
Спасибо всем за помощь. |
|