当将不在枚举中的值分配给该字段时,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';
最佳答案
如果您尝试将 ENUM 字段设置为不在定义列表中的值,那么它将作为索引 0(一个空字符串)插入。仅当没有为该列指定值时,默认值才会起作用。
我想要做你需要的事情,你需要首先检查代码中的无效值,然后在查询中包含你想要的值。
关于mysql - 当分配的值不在枚举中时,枚举的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155322/