相关疑难解决方法(0)

具有UNIQUE索引的列中的多个NULL值

我们有一个表在列上具有唯一索引,可以接受空值.问题是我们发现这个结构只能接受一行具有NULL值.如果我们尝试添加NULL值的第二行,我们会得到一个错误."无法在对象中插入重复的键行...".

我们可以做些什么来保持此列上的索引以及将NULL值添加到多行的能力?

sql-server

6
推荐指数
1
解决办法
2万
查看次数

为什么要在所需的数据库列上设置 `null: false, default: ""`?

我正在构建一个带有用于身份验证的 Devise 的 Rails 应用程序,它的默认数据库迁移设置以下列:

## Database authenticatable
t.string :email,              null: false, default: ""
t.string :encrypted_password, null: false, default: ""
Run Code Online (Sandbox Code Playgroud)

设置null: falsedefault: ""同时的目的是什么?

我的理解是,null: false有效地使一个值成为必需:即,尝试NULL在该列中保存具有值的记录将在数据库级别失败,而不依赖于模型的任何验证。

但是然后default: ""基本上通过NULL在保存之前将值转换为空字符串来撤消。

我知道对于可选列,您希望拒绝NULL值只是为了确保该列中的所有数据都属于同一类型。但是,在这种情况下,电子邮件和密码绝对不是用户身份验证模型上的可选属性。我确定模型中有验证以确保您无法创建电子邮件地址为空的用户,但是您为什么要default: ""在这里设置呢?它是否提供了一些好处或防止了一些我没有考虑过的边缘情况?

mysql validation null relational-database devise

3
推荐指数
1
解决办法
1984
查看次数