Ruby on rails 如何操作:默认值=>;0和:空=>;迁移中的整型字段是否为false?
如果我使用迁移来更新数据库,并添加如下整数字段:Ruby on rails 如何操作:默认值=>;0和:空=>;迁移中的整型字段是否为false?,ruby-on-rails,null,migration,default,Ruby On Rails,Null,Migration,Default,如果我使用迁移来更新数据库,并添加如下整数字段: t.integer :foo :default => 0, :null => false 数据库中现有记录和新记录的默认状态是什么?我希望答案是: -两者都将foo读回为0 如果我有:null=>false,是否需要default=>0 只要试着理解这两者之间的区别…:null=>false告诉数据库不要接受null值 :默认值=>0做两件事: 当查询中未指定任何内容时,请告诉数据库使用“0”作为默认值 告诉rails在创建新对象时
t.integer :foo :default => 0, :null => false
数据库中现有记录和新记录的默认状态是什么?我希望答案是:
-两者都将foo读回为0
如果我有:null=>false,是否需要default=>0
只要试着理解这两者之间的区别…
:null=>false
告诉数据库不要接受null
值
:默认值=>0
做两件事:
NULL
值,请设置:NULL=>false
,否则只需使用:default
参数。请注意,'0'和NULL
不是一回事
没有
NULL
值对于索引目的或需要向第三方提供直接数据库访问可能很重要。这取决于您的数据库。不是栏杆。这是否意味着,如果在迁移之前我有一个现有的数据库记录,它将作为0读回?所以,如果我在一个旧记录上执行Table.value,value将==0?是的。如果您有一个包含NULL
值的表列,但您设置了默认值,那么将返回该默认值。这是一个启发性的、有价值的信息:“没有NULL值可能对索引目的很重要,或者如果您需要向第三方提供直接数据库访问。”,即使这是一个简单的问题。@ahnbizcad不明白这一点,第三方的直接连接与不需要空值有什么关系?