SQL definido valores permitidos para uma coluna

8

Quero criar uma ALTER TABLEexpressão que adicione uma nova coluna e defina um valor padrão e, adicionalmente, defina os valores permitidos para essa coluna. É uma coluna de texto, e permitido deve ser apenas 'valor1', 'valor2' e 'valor3'. O padrão deve ser 'value1'

De acordo com os seguintes diagramas de sintaxe:

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Estou chegando a esse ponto

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

mas não tenho certeza absoluta de como definir os valores permitidos.

É possível fazer algo parecido

CONSTRAINT CHECK new_column IN ('valor1', 'valor2', 'valor3)

? Devo admitir que o search conditiondiagrama está me confundindo bastante.

Valentino Ru
fonte

Respostas:

14
alter table ExampleTable
    add (new_column varchar(20) default 'value1',
         constraint ckExampleTable check (new_column in ('value1', 'value2', 'value3')));
Keith Tate
fonte
11
@Phil - Além dos goolhares válidos por minha leitura do diagrama e funciona bem no Oracle SQL fiddle
Martin Smith
5

Você realmente deve fazer isso como duas declarações diferentes:

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
fonte
Como observação, essa é a sintaxe do SQL Server, pois eu respondi a pergunta antes de quando ela tinha a tag Oracle e parecia ser o SQL Server para mim.
Cfradenburg
0

Servidor SQL:

ALTER TABLE table_name
    ADD CONSTRAINT constraint_name CHECK (column_name IN ('aaa', 'bbb', ...))
Bohdan
fonte