我具有以下结构,并且想在(UserId和Contact)上创建唯一索引。在gorm中有可能吗?
type Contact struct {
gorm.Model
UserId uint `gorm:"index;not null"`
Contact string `gorm:"type:text;not null"`
}
我想创建类似的表
CREATE TABLE contact (...column definitions ...)
CONSTRAINT constraint1
UNIQUE (user_id, contact)
答案 0 :(得分:3)
models上的文档为INDEX
和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"`
}