登录
首页 >  Golang >  Go问答

Gorm 元素收集

来源:stackoverflow

时间:2024-03-22 14:45:34 106浏览 收藏

本文讨论了在使用 Gorm 框架将具有外键约束的结构保存到数据库时遇到的错误。错误消息指示需要指定冲突处理策略,例如使用 Upsert 或 On Conflict 语句。文章提供了解决此问题的代码示例,其中使用 `clause.OnConflict{DoNothing: true}` 来指示在发生冲突时不采取任何操作。

问题内容

我正在开发一个按地区存储山脉的应用程序。

type mountain struct {
    name     string
    height   int
    regionid int
}

type region struct {
    id        int64
    name      string
    mountains []mountain
}

正如您所见,我有一个山脉数组,在 regionid 上有外键约束。我故意避免在山上设置id,以便在更新时将它们完全替换。

当我尝试保存该区域时:

var region = &models.region{
    name: "lombardia",
    mountains: []models.mountain{
        {
            name:   "pizzo coca",
            height: 3050,
        },
        {
            name:   "bernina",
            height: 4049,
        },
    },
}

db.create(region)

我有这个错误:

ERRORE: ON CONFLICT DO UPDATE richiede una specifica di inferenza o il nome di un vincolo 
(SQLSTATE 42601)

我知道这不是英文,但我在网上找不到英文版本。


正确答案


尝试使用 Upsert / On Conflict,例如:

import "gorm.io/gorm/clause"

// Do nothing on conflict
db.Clauses(clause.OnConflict{DoNothing: true}).Create(&user)

this article中的一些信息

以上就是《Gorm 元素收集》的详细内容,更多关于的资料请关注golang学习网公众号!

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