如何为 Gorm 指定具有多列唯一索引的结构?

How to specify a struct with a multi-column unique index for Gorm?

如何定义我的 structs 以在 Go 中为 Gorm 指定多列唯一索引?

如:

type Something struct {
    gorm.Model
    First  string `sql:"unique_index:unique_index_with_second"`
    Second string `sql:"unique_index:unique_index_with_first"`
}

您是否正在尝试创建 table 以便 First 和 Second 的组合是唯一的?

这应该有效:

type Something struct {
    ID uint
    gorm.Model
    First  string `gorm:"primary_key"`
    Second string `gorm:"primary_key"`
}

您可以为每一列定义相同的唯一索引。

type Something struct {
    gorm.Model
    First  string `sql:"unique_index:idx_first_second"`
    Second string `sql:"unique_index:idx_first_second"`
}

这就是你的做法:你需要使用 gorm struct 标签并指定索引是唯一的

type Something struct {
    gorm.Model
    First  string `gorm:"index:idx_name,unique"`
    Second string `gorm:"index:idx_name,unique"`
}

对于最新版本的 gorm(或者对于我的情况) 这有效:

type Something struct {
    gorm.Model
    First  string `gorm:"uniqueIndex:idx_first_second"`
    Second string `gorm:"uniqueIndex:idx_first_second"`
}