環境
- DB: mysql
- gorm: v1.21.3
実現したいこと
gorm で下記のような構造体の Update 処理を行いたいです。
また、mysql 側の条件として、 user テーブルのカラム名は変更不可です。
構造体と登録処理
type User struct { SfUserID *string `gorm:"primaryKey;columns:sf_user_id"` FirstName *string `gorm:"column:first_name"` LastName *string `gorm:"column:last_name"` } func (u *User) Update() error { result := db.Model(&User{}).Updates(u) if result.Error != nil { return result.Error } return nil }
実行結果
実行
// データベース内部には、sf_user_id = "XXYYZZ" のレコードが既に存在するものとします。 func main(){ id := "XXYYZZ" fName := "jon" lName := "mark" user := &User{SfUserID: &id, FirstName: &fName, LastName: &lName} err = user.Update() if err != nil { fmt.Printf("error: %v", err) return } }
エラー内容
WHERE conditions required
実行された SQL
UPDATE `user` SET `sf_user_id`='XXYYZZ',`first_name`='jon',`last_name`='mark'
調査内容
grom のドキュメントから primaryKey が正常に貼れていないと推測できますが、mysql 側の条件を満たす解決策が見つからずにいます。
お力添えいただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。