在新列上使用不为空的默认值是否安全?

Is it safe to use default value with not null on a new column?

我们有一个由 Postgresql v11.4 提供支持的 Rails 应用程序,我想在其中添加一个具有默认值 非空约束的新列,如下所示:

add_column :blog, :published, :boolean, default: false, null: false

Ankane 的强烈迁移 gem 说;添加具有默认值的新列是安全的,不需要 table 重写。

结合仍然安全吗?谢谢!

是的,如果没有现有数据,null 约束是安全的,但如果您想添加一个列并用现有数据填充它,并且现有数据可能为 null,您的数据迁移将失败。