SQL - изменить свойства поля

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

SQL - изменить свойства поля

Сообщение Dummiel » 16.08.2006 (Ср) 8:06

Изменение свойств таблицы : Изменение свойств столбца (ALTER TABLE CHANGE)
Изменить свойства одного или нескольких столбцов можно при помощи следующей конструкции:

ALTER TABLE table_name CHANGE field_name_old field_name_new parametrs
где

table_name - имя таблицы, в которой находится изменяемый столбец;
field_name_old - имя столбца изменяемого столбца;
field_name_new - новое имя изменяемого столбца (должно равняться field_name_old, если мы не хотим поменять имя столбца);
parametrs - новые параметры столбца.
В следующем примере установим тип строки field_1 как текст:
$sql="ALTER TABLE my_table CHANGE field_1 field_1 TEXT";
mysql_query($sql);

А если необходимо при этом еще и переименовать столбец в field_2, то получиться так:
$sql="ALTER TABLE my_table CHANGE field_1 field_2 TEXT";
mysql_query($sql);

В случае, если надо изменить свойства сразу нескольких столбцов, то конструкцию
CHANGE field_name_old field_name_new parametrs повторяем через запятую для каждого столбца:
$sql="ALTER TABLE my_table CHANGE field_1 field_2 TEXT, CHANGE field_3 field_3 TEXT";
mysql_query($sql);


Найдено на сайте http://www.spravkaweb.ru

Вот теперь вопросы: вставить/удалить поле [ALTER TABLE ... ADD] и [ALTER TABLE ... DROP] получаются без проблем, но только по одному полю за один запрос, если несколько - сразу "Ошибка синтаксиса". [ALTER TABLE ... CHANGE] не проходит вообще - сразу "Ошибка синтаксиса".

Помогите найти ошибку. В БД Access 97 мне нужно несколько полей добавить в таблицу, несколько убрать, а одно текстовое - изменить длину поля с 20 на 50. Причем таблица уже заполнена, и нельзя в ней изменять данные, т.к. ПИН человека привязан к счетчику.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Re: SQL - изменить свойства поля

Сообщение Nicky » 16.08.2006 (Ср) 10:03

Dummiel писал(а):...Вот теперь вопросы: вставить/удалить поле [ALTER TABLE ... ADD] и [ALTER TABLE ... DROP] получаются без проблем, но только по одному полю за один запрос, если несколько - сразу "Ошибка синтаксиса". [ALTER TABLE ... CHANGE] не проходит вообще - сразу "Ошибка синтаксиса".

Помогите найти ошибку. В БД Access 97 мне нужно несколько полей добавить в таблицу, несколько убрать, а одно текстовое - изменить длину поля с 20 на 50. Причем таблица уже заполнена, и нельзя в ней изменять данные, т.к. ПИН человека привязан к счетчику.

DAOSDK.CHM писал(а):ALTER TABLE table {ADD {COLUMN field type [(size)] [NOT NULL] [CONSTRAINT index] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.08.2006 (Ср) 10:22

через промежуточную таблицу надо делать. т.е. сначала создаешь таблицу, аналогичную нужной, переливаешь туда все данные, затем изменеяешь исходную таблицу (добавляешь/удаляешь поля/индексы/констрейнты), а затем уже переливаешь обратно даные из временной таблицы в новую исходную

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 16.08.2006 (Ср) 10:28

Konst_One писал(а):через промежуточную таблицу надо делать. т.е. сначала создаешь таблицу, аналогичную нужной, переливаешь туда все данные, затем изменеяешь исходную таблицу (добавляешь/удаляешь поля/индексы/констрейнты), а затем уже переливаешь обратно даные из временной таблицы в новую исходную

Проще сразу создать правильную копию, залить данные, дропнуть исходную и переименовать

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.08.2006 (Ср) 10:38

Nicky писал(а):Проще сразу создать правильную копию, залить данные, дропнуть исходную и переименовать

По-моему, не все СУБД позволяют переименовывать...
Konst_One дал универсальный рецепт.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Re: SQL - изменить свойства поля

Сообщение Dummiel » 17.08.2006 (Чт) 4:03

Причем таблица уже заполнена, и нельзя в ней изменять данные, т.к. ПИН человека привязан к счетчику.


А при создании новой (промежуточной) таблицы счетчик автоматически начнет создавать свои значения, и, соответственно, будут меняться ПИНы "человеков". :(

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Re: SQL - изменить свойства поля

Сообщение Dummiel » 17.08.2006 (Чт) 4:07

Nicky][quote=\"DAOSDK.CHM писал(а):ALTER TABLE table {ADD {COLUMN field type [(size)] [NOT NULL] [CONSTRAINT index] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }
[/quote]

Ну это добавить/удалить. А изменить? Или CHANGE вообще не работает? Или изменить невозможно?

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: SQL - изменить свойства поля

Сообщение VVitafresh » 17.08.2006 (Чт) 10:15

Dummiel писал(а):А при создании новой (промежуточной) таблицы счетчик автоматически начнет создавать свои значения, и, соответственно, будут меняться ПИНы "человеков". :(

Конечно, начнет.
ИМХО, неправильно привязывать логику программы к полю "счетчик". Если нужны ПИНы, табельные номера и т.п., то генерить их лучше самому.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Re: SQL - изменить свойства поля

Сообщение Dummiel » 17.08.2006 (Чт) 12:51

Конечно, начнет.
ИМХО, неправильно привязывать логику программы к полю "счетчик". Если нужны ПИНы, табельные номера и т.п., то генерить их лучше самому.

Полностью согласен. Да только моя прога использует БД другой проги, т.е., уже готовую, и поэтому менять в ней ничего нельзя. Кстати, эта прога модифицирует поля этой БД именно программно, и именно так, как хотелось бы мне.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Re: SQL - изменить свойства поля

Сообщение Nicky » 21.08.2006 (Пн) 7:37

Dummiel писал(а):Ну это добавить/удалить. А изменить? Или CHANGE вообще не работает? Или изменить невозможно?

Я это и имел в виду

Dummiel писал(а):А при создании новой (промежуточной) таблицы счетчик автоматически начнет создавать свои значения, и, соответственно, будут меняться ПИНы "человеков". :(

Проверял, показания счетчика нормально переносятся


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList