Как добавить уникальный столбец в sybase? - PullRequest
0 голосов
/ 28 августа 2011

У меня есть таблица базы данных sybase, в которую мне нужно добавить новый столбец.

Условия: столбец не должен содержать пустых значений и быть уникальным. что такое alter table sql для достижения этой цели?

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

Я устал исполнять

alter table Test add Name varchar not null unique

Я получаю сообщение о том, что по умолчанию должно быть указано значение, отличное от NULL. но я хочу добавить уникальное ограничение, так что мне действительно нужно указать значение по умолчанию?

спасибо

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

Уникальные значения указываются как часть индекса в столбце, а не в самом определении столбца.

Попытка:

alter table Test add Name varchar not null
create unique index index_name_unique on Test (Name)

Справочное руководство ASE может помочь более подробно.

2 голосов
/ 19 сентября 2011

После создания таблицы Sybase ASE не позволяет напрямую добавлять столбец NOT NULL, если для столбца не указано значение по умолчанию. Однако, если таблица все еще пуста, вы можете сделать следующее -

  1. Сначала добавьте новый столбец как столбец NULL в таблицу, используя команду alter table -

изменить таблицу Test add Name varchar (100) null

  1. Как только это будет сделано, попробуйте изменить то же имя столбца в таблице Test, используя скрипт alter table -

alter table Тест изменить имя varchar (100) NOT NULL

и вы увидите, что с помощью этих шагов вы можете изменить столбец Имя в столбец NOT NULL. Это связано с тем, что в данный момент сервер Sybase проверяет, так как в таблице нет данных, поэтому ограничение NOT NULL не проверяется и столбец становится NOT NULL. Следовательно, мы можем пропустить ограничение по умолчанию.

Если бы в таблице Test уже были некоторые данные, то нам нужно добавить еще один шаг между шагами 1 и 2, который добавит значения по умолчанию к существующим строкам таблицы. Это можно сделать с помощью сценария для предыдущих данных, а затем выполнить шаг 2.

Чтобы столбец допускал только уникальные значения для столбца, необходимо добавить ограничение уникального ключа, используя следующий синтаксис -

изменить таблицу Test add ограничение UK1 уникально (имя)

...