代码之家  ›  专栏  ›  技术社区  ›  typeoneerror

为枚举指定不在枚举中的值时的默认值

  •  0
  • typeoneerror  · 技术社区  · 14 年前

    当一个不在枚举中的值分配给该字段时,mysql表中是否有一种方法来分配默认值?

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

    工作如果 status 不是在创建时定义的,但如果将其设置为不在枚举或空值中的某个值,则该值为“空白”(似乎不为空)。如果我将它设置为空,我会期望它是“未经考虑的”,因为它不能为空。不确定这是否合理。插入前是否需要清理数据以确保该值首先存在于枚举中?

    UPDATE comments SET status = NULL;
    UPDATE comments SET status = 'not_in_there';
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Andrew    8 年前

    如果尝试将枚举字段设置为不在定义列表中的值,则它将作为索引0(空字符串)插入。只有当没有为该列指定值时,默认值才会生效。

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