第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 upsert 操作中獲取現(xiàn)有和插入的 ID

在 upsert 操作中獲取現(xiàn)有和插入的 ID

Go
海綿寶寶撒 2023-02-21 19:10:31
我有一個場景,我需要在表中插入一些數(shù)據(jù)數(shù)組,在這種情況下,如果名稱和版本的組合已經(jīng)存在(復(fù)合唯一約束),我需要獲取這些 ID,否則獲取插入的 ID,如果兩種情況exist get inserted 和 existing ids我試過的模型和代碼如下:模型依賴type Dependency struct {    gorm.Model    ID      string `gorm:"primaryKey; not null"`    Name    string `gorm:"not null; UniqueIndex:idx_name_version"`    Version string `gorm:"not null; UniqueIndex:idx_name_version"`}使用 gorm 查詢代碼以插入依賴項var saveDependencyData []models.Dependency// Dependecies are read form api input // [//   {//       "name": "node",//       "version": "16.0.0"//   },//   {//       "name": "node",//       "version": "18.0.0"//   }// ]for _, dep := range Dependecies {    saveDependencyData = append(saveDependencyData, models.Dependency{        ID:      nanoid.New(),        Name:    dep.Name,        Version: dep.Version,    })}res :=  db.Clauses(clause.OnConflict{            Columns:   []clause.Column{{Name: "name"}, {Name: "version"}},            DoUpdates: clause.AssignmentColumns([]string{"name"}),        }).Create(saveDependencyData)gorm查詢輸出INSERT INTO "dependencies" ("id","created_at","updated_at","deleted_at","name","version") VALUES ('QanL-nfNFrOGdxG2iXdoQ','2022-10-06 19:21:13.079','2022-10-06 19:21:13.079',NULL,'react','16.0.0'),('Yw1YyQ-aBqrQtwZ72GNtB','2022-10-06 19:21:13.079','2022-10-06 19:21:13.079',NULL,'react','18.0.0') ON CONFLICT ("name","version") DO UPDATE SET "name"="excluded"."name" RETURNING "id"此查詢返回我需要的 ID 列表,但找不到檢索它的方法。使用 Scan() 獲取該表中的所有數(shù)據(jù)。您可以提供一種從上述 GORM db.Clauses() 中檢索返回 ID 的方法,或者使用任何其他優(yōu)化方法來使用更新插入查詢獲取那些(插入的和現(xiàn)有的)ID。
查看完整描述

1 回答

?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

如評論中所示:GORM 的幾個函數(shù)需要一個指針作為參數(shù),并將用信息更新變量。

顯然,所有主要目的是檢索信息的函數(shù)都是這種情況(FirstFind, ..., cf. https://gorm.io/docs/query.html)。

但對于修改數(shù)據(jù)的函數(shù)也是如此

因此,這種情況下的解決方案是通過Create(&saveDependencyData)而不是Create(saveDependencyData).

與數(shù)據(jù)庫對應(yīng)的最新信息將在saveDependencyData調(diào)用后可用。


查看完整回答
反對 回復(fù) 2023-02-21
  • 1 回答
  • 0 關(guān)注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號