当一个不在枚举中的值被分配给该字段时,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';
答案 0 :(得分:2)
如果您尝试将ENUM字段设置为不在定义列表中的值,则它将作为索引0(空字符串)插入。如果没有为该列指定值,则默认值才会起作用。
我想你需要做的就是首先检查代码中的无效值,然后在查询中包含你想要的值。