分配不在枚举中的值时枚举的默认值

时间:2010-07-01 05:36:45

标签: mysql

当一个不在枚举中的值被分配给该字段时,MySQL表中是否有一种方法可以指定默认值?

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

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

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

1 个答案:

答案 0 :(得分:2)

如果您尝试将ENUM字段设置为不在定义列表中的值,则它将作为索引0(空字符串)插入。如果没有为该列指定值,则默认值才会起作用。

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