SQL-Set zulässige Werte für eine Spalte

8

Ich möchte einen ALTER TABLEAusdruck erstellen, der eine neue Spalte hinzufügt, einen Standardwert festlegt und zusätzlich die zulässigen Werte für diese Spalte definiert. Es ist eine Textspalte und darf nur 'Wert1', 'Wert2' und 'Wert3' sein. Die Standardeinstellung sollte "Wert1" sein.

Nach folgenden Syntaxdiagrammen:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Ich komme an diesen Punkt

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

Ich bin mir jedoch nicht sicher, wie ich die zulässigen Werte einstellen soll.

Ist es möglich, so etwas zu machen?

CONSTRAINT CHECK new_column IN ('Wert1', 'Wert2', 'Wert3)

? Ich muss zugeben, dass das search conditionDiagramm mich ziemlich verwirrt.

Valentino Ru
quelle

Antworten:

14
alter table ExampleTable
    add (new_column varchar(20) default 'value1',
         constraint ckExampleTable check (new_column in ('value1', 'value2', 'value3')));
Keith Tate
quelle
1
@Phil - Abgesehen von dem goAussehen, das nach meiner Lektüre des Diagramms gültig ist und in Oracle SQL Fiddle
Martin Smith
5

Sie sollten dies tatsächlich als zwei verschiedene Aussagen tun:

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
quelle
Hinweis: Dies ist die SQL Server-Syntax, da ich die Frage vor dem Oracle-Tag beantwortet habe und mir als SQL Server erschien.
Fradenburg
0

SQL Server:

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