2010-07-01 185 views
0

当枚举中不包含的值被分配给该字段时,MySQL表中是否有方法分配缺省值?当枚举值不在枚举中时赋予枚举的默认值

CREATE TABLE `comments` (
    `status` enum('approved','moderated','unmoderated') NOT NULL DEFAULT 'unmoderated' 
); 

工作,如果status不是在创建时定义,但如果你在枚举或NULL将其设置为不的东西,它是“空白”(似乎不为NULL)。如果我将它设置为NULL,我会期望它是'unmoderated',因为它不能为空。不知道这是否有道理。在插入之前是否需要清理数据以确保枚举中的值是否存在?

UPDATE comments SET status = NULL; 
UPDATE comments SET status = 'not_in_there'; 

回答

2

如果你尝试,而不是在定义列表然后将它插入为指数0,一个空字符串的ENUM字段设置为一个值。如果没有为该列指定任何值,则默认值才会起作用。

我想做你需要的东西,你需要首先检查代码中的无效值,然后在查询中包含你想要的值。