我正在用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