Open3
gorm v2のメモ
gorm v2、Saveメソッドは「 UPSERT している && ゼロ値でも更新」なので UPDATEならばUpdateメソッドに置き換えたいが、 Updateメソッドは「構造体ベースの更新値指定だとゼロ値は無視」なのでそれなりに修正が必要で難儀…
Save
is a combination function. If save value does not contain primary key, it will executeCreate
, otherwise it will executeUpdate
(with all fields).
Updates supports updating with
struct
ormap[string]interface{}
, when updating withstruct
it will only update non-zero fields by default
WithContext
では新しいセッション(コネクション)が作られる。
Transaction
メソッドにわたす無名関数内部ならば WithContext
しても同一セッションになるようだ。
Create
と Clauses
を使って ON DUPLICATE KEY UPDATE
すると戻り値のオブジェクトの中身が正しい状態になっていることを期待できない。
Create(&user)
した後に user
の中身にDBのデータが反映されているとは限らない…