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.

Respostas:


14
alter table ExampleTable
    add (new_column varchar(20) default 'value1',
         constraint ckExampleTable check (new_column in ('value1', 'value2', 'value3')));

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'))

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', ...))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.