您可以使用
priority
指定顺序,默认优先级值是
10
,如果优先级值相同,则顺序取决于模型结构体字段的顺序
type User struct { Name string `gorm:"index:idx_member"` Number string `gorm:"index:idx_member"` }
type User struct { Name string `gorm:"index:idx_member,priority:2"` Number string `gorm:"index:idx_member,priority:1"` }
type User struct { Name string `gorm:"index:idx_member,priority:12"` Number string `gorm:"index:idx_member"` }
|
在这种情况下,您可以使用索引标签
composite
, 它意味着复合索引的id。 所有具有相同结构复合id的字段都与原始规则一样,被合并到相同的索引中。 但改进使得最受影响/嵌入结构能够通过命名策略生成索引名称。 例如:
type Foo struct { IndexA int `gorm:"index:,unique,composite:myname"` IndexB int `gorm:"index:,unique,composite:myname"` }
|
如果表Foo被创建,复合索引的名称将是
idx_foo_myname
。
type Bar0 struct { Foo }
type Bar1 struct { Foo }
|
复合索引的名称分别是
idx_bar0_myname
和
idx_bar1_myname
。
复合
只能在指定索引名称时使用。