2

这就像这个问题的第 2 部分:An issue while creating multiple unique columns with GORM

我创建了一个对多个字段(描述、is_active、deleted_at)具有唯一约束的表。原来它适用于这样的行:

编号| 描述 | is_active | 删除_at  
1 | 描述1 | 真实 | 2000 年 1 月 1 日
2 | 描述1 | 真实 | 2000 年 1 月 1 日

并且不像这样工作:

编号| 描述 | is_active | 删除_at  
1 | 描述1 | 真实 | 空值
2 | 描述1 | 真实 | 空值

而且我也不希望重复具有 NULL 值的行。有解决方法吗?

4

1 回答 1

3

13.1.14。创建表语法

UNIQUE 索引创建一个约束,使得索引中的所有值都必须是不同的。如果您尝试使用与现有行匹配的键值添加新行,则会发生错误。对于所有引擎,UNIQUE 索引允许包含 NULL 的列有多个 NULL 值。

作为一种解决方法,您可以尝试deleted_at使用默认值 0 使列不可为空

deleted_at NOT NULL DEFAULT 0

并围绕它构建您的查询和应用程序逻辑。

另一种选择是使用触发器强制执行此约束。

于 2013-03-05T08:48:02.913 回答