当 add_column 使用默认选项并且没有 null:false 时是不是有可能插入 null

Posted

技术标签:

【中文标题】当 add_column 使用默认选项并且没有 null:false 时是不是有可能插入 null【英文标题】:Is there a possibility that null is inserted when add_column with default option, and without null:false当 add_column 使用默认选项并且没有 null:false 时是否有可能插入 null 【发布时间】:2021-12-20 12:32:09 【问题描述】:

当我迁移文件以将列添加到现有数据时,

class AddAdminToUsers < ActiveRecord::Migration[5.0]
  def change
    add_column :users, :admin, :boolean, default: false
  end
end

nulladmin 列的值是否有可能?

如果我像这样添加null: false 选项,

class AddAdminToUsers < ActiveRecord::Migration[5.0]
  def change
    add_column :users, :admin, :boolean, default: false, null: false
  end
end

我可以理解admin 列从不包含null

但是,如果我添加带有default 选项且没有null: false 选项的列,我想知道admin 包含null 的可能性。

数据库是 mysql

谢谢。

【问题讨论】:

【参考方案1】:

我尝试使用 SQLite,但我认为它同样适用于 MySQL。

如果您使用default 选项而没有null: false 选项,则admin 可能包含null

如果同时使用defaultnull 选项,显然不能包含null:

【讨论】:

以上是关于当 add_column 使用默认选项并且没有 null:false 时是不是有可能插入 null的主要内容,如果未能解决你的问题,请参考以下文章

rails add_column 具有默认值但默认值不生效

为啥 mutate() 和 add_column() 不接受相同的基本参数?

MySQL常见建表选项及约束

Select2 多个 - 如何设置空白默认值

MySQL常见建表选项及约束

MySQL常见建表选项及约束