2010-10-25 62 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

相关问题