这就像这个问题的第2部分:An issue while creating multiple unique columns with GORM
我在许多字段(description,is_active,deleted_at)上创建了一个带有唯一约束的表。它转向了它适用于这样的行:
id| description | is_active | deleted_at 1 | desc1 | true | 01/01/2000 2 | desc1 | true | 01/01/2000
并且不能像这样工作:
id| description | is_active | deleted_at 1 | desc1 | true | NULL 2 | desc1 | true | NULL
我也不希望复制具有NULL值的行。是否有解决方法?
答案 0 :(得分:3)
一个 UNIQUE索引创建一个约束,以便索引中的所有值 必须是截然不同的如果您尝试使用a添加新行,则会发生错误 与现有行匹配的键值。 对于所有引擎,一个独特的 index允许包含NULL的列的多个NULL值。
作为一种解决方法,您可以尝试使deleted_at
列无法使用默认值0
deleted_at NOT NULL DEFAULT 0
围绕它构建您的查询和应用程序逻辑。
另一个选择是使用触发器强制执行此约束。