2010-05-27 5 views
0

есть ли один оператор select, который будет выполнять все три из них: первичный ключ, уникальный и автоматический_инкремент?mysql: как изменить столбец для PK Auto_Increment

+0

Вы имеете в виду одно заявление ALTER? Фактически вы не используете инструкции SELECT для изменения структур таблиц. –

+0

yes thast, что я имею в виду –

+0

, когда вы полностью инвертируете смысл вопроса после того, как получаете ответы, это делает эти ответы действительно глупыми. Если вы сейчас просите о противоположности того, что вы изначально просили, я думаю, вы должны задать новый вопрос. – tvanfosson

ответ

2

Здесь мы создаем столик:

mysql> CREATE TABLE test2 (id int); 

Примечание Null ДА, и id не является первичным ключом, а также не auto_increment.

mysql> DESCRIBE test2; 
+-------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+---------+------+-----+---------+-------+ 
| id | int(11) | YES |  | NULL |  | 
+-------+---------+------+-----+---------+-------+ 
1 row in set (0.00 sec) 

Вот альтер команда:

mysql> ALTER TABLE test2 MODIFY COLUMN id INT NOT NULL auto_increment, ADD primary key (id); 

Теперь Null НЕТ, и id является первичным ключом с auto_increment.

mysql> describe test2; 
describe test2; 
+-------+---------+------+-----+---------+----------------+ 
| Field | Type | Null | Key | Default | Extra   | 
+-------+---------+------+-----+---------+----------------+ 
| id | int(11) | NO | PRI | NULL | auto_increment | 
+-------+---------+------+-----+---------+----------------+ 
1 row in set (0.00 sec) 

Первичные ключи всегда уникальны.

1

Первичный ключ всегда уникален.

+0

, вы должны знать, что вопрос был полностью перевернут после того, как вы оставили свой ответ. – tvanfosson

+0

@tvanfosson: thank you =) – newtover

1

Вы не можете изменить структуру базы данных с помощью операторов связи DML (data manipulation language), таких как SELECT. Вам нужно указать DDL (язык определения данных). Столбцы таблицы могут быть изменены с ALTER TABLE:

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Синтаксис в основном это:

ALTER TABLE `foo` 
CHANGE COLUMN `bar` `bar` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
ADD PRIMARY KEY (`foo`); 

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

Смежные вопросы