【问题标题】:How do I create unique constraint for multiple columns?如何为多个列创建唯一约束?
【发布时间】:2020-08-14 08:35:18
【问题描述】:

我有以下结构,想在(用户 ID 和联系人)上创建唯一索引。这在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) 

【问题讨论】:

    标签: sql go go-gorm


    【解决方案1】:

    models 上的文档为 INDEXUNIQUE_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"`
    }
    

    【讨论】:

    • UNIQUE_INDEX 对我不起作用(没有显示任何错误);我不得不改用uniqueIndex
    • 我遇到了与@Wumms 相同的问题。谢谢,解决了!
    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多