SQL为列设置允许的值


8

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

根据以下语法图:

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

我到了这一点

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

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

有可能使像

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

?我必须承认该search condition图使我感到困惑。

Answers:


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小提琴
马丁·史密斯

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

请注意,这是SQL Server语法,因为我在它带有Oracle标记并且对我来说似乎是SQL Server之前就回答了该问题。
cfradenburg

0

SQL Server:

ALTER TABLE table_name
    ADD CONSTRAINT constraint_name CHECK (column_name IN ('aaa', 'bbb', ...))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.