我有以下结构,并想在(UserId 和 Contact)上创建唯一索引。这在gorm中可能吗?
type Contact struct {
gorm.Model
UserId uint `gorm:"index;not null"`
Contact string `gorm:"type:text;not null"`
}
Run Code Online (Sandbox Code Playgroud)
我想创建类似的表
CREATE TABLE contact (...column definitions ...)
CONSTRAINT constraint1
UNIQUE (user_id, contact)
Run Code Online (Sandbox Code Playgroud)
关于模型的文档为INDEXand指定了以下内容UNIQUE_INDEX:
INDEX 创建带名称或不带名称的索引,同名创建复合索引
UNIQUE_INDEX 和INDEX一样,创建唯一索引
这意味着具有相同UNIQUE_INDEX名称的两个字段将创建一个复合唯一索引。
使用以compositeindex您的示例命名的复合索引的完整结构定义变为:
type Contact struct {
gorm.Model
UserId uint `gorm:"UNIQUE_INDEX:compositeindex;index;not null"`
Contact string `gorm:"UNIQUE_INDEX:compositeindex;type:text;not null"`
}
Run Code Online (Sandbox Code Playgroud)