SQL mengatur nilai yang diizinkan untuk kolom

8

Saya ingin membuat ALTER TABLEekspresi yang menambahkan kolom baru dan menetapkan nilai default dan tambahan menentukan nilai yang diizinkan untuk kolom itu. Ini kolom teks, dan hanya boleh berupa 'value1', 'value2' dan 'value3'. Default harus 'value1'

Menurut diagram sintaks berikut:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Saya sampai pada titik ini

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

tapi saya sama sekali tidak yakin cara mengatur nilai yang diizinkan.

Apakah mungkin untuk membuat sesuatu seperti itu

CONSTRAINT PERIKSA new_column IN ('value1', 'value2', 'value3)

? Saya harus mengakui search conditiondiagram itu cukup membingungkan saya.

Valentino Ru
sumber

Jawaban:

14
alter table ExampleTable
    add (new_column varchar(20) default 'value1',
         constraint ckExampleTable check (new_column in ('value1', 'value2', 'value3')));
Keith Tate
sumber
1
@ Phil - Terlepas dari gotampak valid per membaca diagram dan berfungsi dengan baik di Oracle sql biola
Martin Smith
5

Anda seharusnya melakukan ini sebagai dua pernyataan berbeda:

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
sumber
Sebagai catatan, ini adalah sintaks SQL Server karena saya menjawab pertanyaan sebelum ketika itu memiliki tag Oracle dan tampaknya SQL Server bagi saya.
cfradenburg
0

SQL Server:

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