GORM の Upsert 機能は FirstOrCreate や FirstOrInit と比較してどのように動作しますか?
Upsert: GORM での作成または更新
GORM では、FirstOrCreate メソッドと FirstOrInit メソッドの両方を使用してデータベース レコードを取得または作成できます。ただし、レコードが新しく作成されたのか更新されたのかを判断するのは不明確な場合があります。
Upsert-On-Conflict を使用した Upsert ソリューション
GORM 1.20.x 以降、強化されたさまざまなデータベースの競合処理機能を利用する Upsert 機能が導入されました。
このスニペット次のような SQL ステートメントに変換されます:
- SQL Server: MERGE INTO "users" USING *** WHEN NOT MATCHED THEN INSERT *** WHEN MATCHED THEN UPDATE SET "name"="excluded"."name";
- PostgreSQL: INSERT INTO "users" *** ON CONFLICT ("id") DO UPDATE SET "name"="excluded "。"名前"、 "age"="excluded"."age";
- MySQL: INSERT INTO 'users' *** ON DUPLICATE KEY UPDATE 'name'=VALUES(name),'age= VALUES(age);
古い GORM のフォールバック ソリューションバージョン
1.9.x より前の GORM バージョンの場合、より効率的なアプローチは、まず更新を試み、一致するものが見つからない場合は新しいレコードを作成することです。
FirstOrInit と FirstOrCreate の区別
どちらのメソッドも目的は似ていますが、動作は異なります。
- FirstOrInit: レコードが存在しない場合は構造体を初期化しますが、レコードは作成しません。
- FirstOrCreate: レコードが存在する場合は作成します。存在しないため、レコードを構造体に取得します。
以上がGORM の Upsert 機能は FirstOrCreate や FirstOrInit と比較してどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
