SQL устанавливает допустимые значения для столбца

8

Я хочу сделать ALTER TABLEвыражение, которое добавляет новый столбец и устанавливает значение по умолчанию, а также определяет допустимые значения для этого столбца. Это текстовый столбец, и допустимыми должны быть только «значение1», «значение2» и «значение3». По умолчанию должно быть «значение1»

Согласно следующим синтаксическим диаграммам:

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

Я добираюсь до этой точки

ALTER TABLE exampleTable ADD COLUMN new_column VarChar(20) DEFAULT 'value1' 

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

Можно ли сделать что-то подобное

CONSTRAINT CHECK new_column IN ('значение1', 'значение2', 'значение3)

? Я должен признать, что search conditionдиаграмма довольно смущает меня.

Валентино Ру
источник

Ответы:

14
alter table ExampleTable
    add (new_column varchar(20) default 'value1',
         constraint ckExampleTable check (new_column in ('value1', 'value2', 'value3')));
Кит Тейт
источник
1
@Phil - Помимо того, что goвыглядит правильно для моего чтения диаграммы и отлично работает в Oracle sql fiddle
Martin Smith
5

Вы должны сделать это как два разных утверждения:

ALTER TABLE test
    ADD new_column VARCHAR(20) DEFAULT 'value1'

ALTER TABLE test
    ADD CONSTRAINT CK_exampleTable_newColumn CHECK (new_column IN ('value1','value2','value3'))
cfradenburg
источник
Как примечание, это синтаксис SQL Server, поскольку я отвечал на вопрос до того, как он имел тег Oracle и показался мне SQL Server.
cfradenburg
0

SQL Server:

ALTER TABLE table_name
    ADD CONSTRAINT constraint_name CHECK (column_name IN ('aaa', 'bbb', ...))
Богдана
источник