mysql - 当分配的值不在枚举中时,枚举的默认值

标签 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';

最佳答案

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

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

关于mysql - 当分配的值不在枚举中时,枚举的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155322/

相关文章:

mysql - Django 从 MySQL 南下到 postgresql

javascript - 在同一项目上使用多个范围值进行搜索

mysql - 如何在Mysql+Node JS中在另一个查询中使用一个查询的结果数组?

php - MYSql 查询性能

php - 使用 GET 从编码 UTF-8 从 URL 获取值

php - 从 MySQL 检索字符串

mysql - 查询电话号码 mysql 有很多格式

php - 如何选择另一个值是数组的值?

MySQL:更新大表的最佳方式

mysql - mysql中的内连接中的子选择仅得到一个结果