Как использовать ALTER TABLE, чтобы добавить новый столбец и сделать его уникальным? - PullRequest
6 голосов
/ 17 сентября 2010

Как мне использовать ALTER TABLE, чтобы добавить новый столбец и сделать его уникальным?

Ответы [ 4 ]

14 голосов
/ 17 сентября 2010

Зависит от СУБД, но я думаю, что следующее вполне переносимо:

ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name ADD UNIQUE (column_name)

Если вы хотите дать имя ограничению UNIQUE, вы можете заменить последнюю команду следующим:

ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name)
4 голосов
/ 17 сентября 2010

если таблица пуста

  ALTER TABLE ADD (FieldName Type)
  ALTER TABLE ADD CONSTRAINT UNIQUE(FieldName)

Если у вас есть данные в таблице, вам нужно сделать это в три шага:

  1. Добавить столбец
  2. Заполнить значения
  3. Добавить уникальное ограничение
1 голос
/ 29 августа 2017

Вы можете сделать это с помощью одного оператора SQL (по крайней мере, с MySQL):

ALTER TABLE `people` ADD COLUMN `personal_code` VARCHAR(50) UNIQUE AFTER `surname`;
1 голос
/ 17 сентября 2010

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

SQL> select count(*) from t23
  2  /

  COUNT(*)
----------
         2


SQL> alter table t23
  2      add new_col number
  3  /

Table altered.

SQL> alter table t23
  2      add constraint t23_uk unique (new_col)
  3  /

Table altered.

SQL>
...