我正在用MySQL創建一個SQL數據庫。如何創建一個只有3個可能給定值的列表?
我需要一個只有3個可能值的列:「Total」「Hours」「OnDemand」。我的意思是用戶必須選擇這三個值中的一個,他將不能選擇另一個值。
我該怎麼辦?
我正在用MySQL創建一個SQL數據庫。如何創建一個只有3個可能給定值的列表?
我需要一個只有3個可能值的列:「Total」「Hours」「OnDemand」。我的意思是用戶必須選擇這三個值中的一個,他將不能選擇另一個值。
我該怎麼辦?
請參閱ENUM
類型。 http://dev.mysql.com/doc/refman/5.0/en/enum.html
即
CREATE TABLE sizes (
name ENUM('small', 'medium', 'large')
);
在Oracle中,你可以像這樣的列創建檢查約束 -
ALTER TABLE yourtable
add CONSTRAINT yourcolumn
CHECK (yourcolumn IN ('Total', 'Hours', 'OnDemand'));
櫃面您正在使用其他數據庫應該有相當的檢查。
如果你想將其建成表本身就需要使用檢查約束,就像這樣:
CREATE TABLE YourTable
(
YourColumn VARCHAR(50) NOT NULL,
CONSTRAINT ck_YourConstraint CHECK (YourColumn = 'Total' OR YourColumn = 'Hours' OR YourColumn = 'OnDemand')
)
但是,您可能想看看規範化數據庫設計更進了一步,並把那些到您的應用程序使用的單獨的查找表中。如果這些查找以任何方式進行修改,這將使您在將來有很大的靈活性。
CHECK CONSTRAINT在MySQL中是允許的語法,但被它忽略。 「CHECK子句已解析但被所有存儲引擎忽略。」來自http://dev.mysql.com/doc/refman/5.1/en/create-table.html – 2010-10-25 16:26:45
注意:仍然可以有一個空值而不是給定的三個值。 – Lekensteyn 2010-10-25 15:37:33
不錯哦! thx .....但是...¿我如何在MySQL Workbench(mysql administrator 2010)上使用這些值創建一個枚舉列表? – NullPointerException 2010-10-25 15:41:08
只是好奇,我不知道mysql,我該怎麼辦如果我想添加一個可能的值到列,是否有可能改變列? – 2010-10-25 15:42:44