2010-10-25 60 views

回答

8

請參閱ENUM類型。 http://dev.mysql.com/doc/refman/5.0/en/enum.html

CREATE TABLE sizes (
    name ENUM('small', 'medium', 'large') 
); 
+1

注意:仍然可以有一個空值而不是給定的三個值。 – Lekensteyn 2010-10-25 15:37:33

+0

不錯哦! thx .....但是...¿我如何在MySQL Workbench(mysql administrator 2010)上使用這些值創建一個枚舉列表? – NullPointerException 2010-10-25 15:41:08

+0

只是好奇,我不知道mysql,我該怎麼辦如果我想添加一個可能的值到列,是否有可能改變列? – 2010-10-25 15:42:44

0

在Oracle中,你可以像這樣的列創建檢查約束 -

ALTER TABLE yourtable 
add CONSTRAINT yourcolumn 
    CHECK (yourcolumn IN ('Total', 'Hours', 'OnDemand')); 

櫃面您正在使用其他數據庫應該有相當的檢查。

0

如果你想將其建成表本身就需要使用檢查約束,就像這樣:

CREATE TABLE YourTable 
(
    YourColumn VARCHAR(50) NOT NULL, 
    CONSTRAINT ck_YourConstraint CHECK (YourColumn = 'Total' OR YourColumn = 'Hours' OR YourColumn = 'OnDemand') 
) 

但是,您可能想看看規範化數據庫設計更進了一步,並把那些到您的應用程序使用的單獨的查找表中。如果這些查找以任何方式進行修改,這將使您在將來有很大的靈活性。

+0

CHECK CONSTRAINT在MySQL中是允許的語法,但被它忽略。 「CHECK子句已解析但被所有存儲引擎忽略。」來自http://dev.mysql.com/doc/refman/5.1/en/create-table.html – 2010-10-25 16:26:45

相關問題