SQL 为列设置允许值

Val*_* Ru 11 oracle constraint default-value alter-table

我想创建一个ALTER TABLE添加新列并设置默认值的表达式,并另外定义该列的允许值。这是一个文本列,允许的应该只有“value1”、“value2”和“value3”。默认应为“value1”

根据以下语法图:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

我快到了

ALTER TABLE exampleTable ADD COLUMN new_column VarChar(20) DEFAULT 'value1' 
Run Code Online (Sandbox Code Playgroud)

但我绝对不确定如何设置允许的值。

是否有可能制作类似的东西

约束检查 new_column IN ('value1', 'value2', 'value3)

? 我必须承认这张search condition图让我很困惑。

小智 16

alter table ExampleTable
    add (new_column varchar(20) default 'value1',
         constraint ckExampleTable check (new_column in ('value1', 'value2', 'value3')));
Run Code Online (Sandbox Code Playgroud)


cfr*_*urg 7

您实际上应该将其作为两个不同的语句来执行:

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'))
Run Code Online (Sandbox Code Playgroud)