登录
首页 >  Golang >  Go问答

将ID与另一列进行PK

来源:stackoverflow

时间:2024-02-21 12:00:25 111浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《将ID与另一列进行PK》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我有一个 stack,其中有许多 stackrequiredparameter

stackrequiredparameter 由其名称标识,但多个堆栈可以具有相同名称的参数。因此,pk 是其名称和所属堆栈 id 的组合。

type stackrequiredparameter struct {
    id      string `gorm:"uniqueindex:idx_required_id_unique_per_stack"`
    stackid uint   `gorm:"uniqueindex:idx_required_id_unique_per_stack"`
}

我尝试实现 stack ,如下所示。

type stack struct {
    gorm.model
    name string `gorm:"unique"`
    requiredparameters []stackrequiredparameter `gorm:"foreignkey:id,stackid; references:id; constraint:onupdate:cascade,ondelete:cascade" json:"requiredparameters,omitempty"`

}

但上面返回以下错误

panic: runtime error: index out of range [1] with length 1

我很确定我收到了该错误,因为我试图将复合键(id、stackid)与堆栈的 id 进行匹配。但如果我在这里发布的信息不够,请告诉我。

问题是,我不知道如何以不同的方式做到这一点。


正确答案


问题是外键和引用都应该包含相同的列

type Stack struct {
    gorm.Model
    Name               string                   `gorm:"unique"`
    RequiredParameters []StackRequiredParameter `gorm:"many2many:required_stack_parameters_joins; foreignKey:ID; joinForeignKey:StackID; References:Name; joinReferences:ParameterID; constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"requiredParameters,omitempty"`
}

type StackRequiredParameter struct {
    Name string `gorm:"primaryKey"`
}

理论要掌握,实操不能落!以上关于《将ID与另一列进行PK》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>