ホームページ バックエンド開発 Golang GORM 2.0 で最後の挿入 ID を取得する方法は?

GORM 2.0 で最後の挿入 ID を取得する方法は?

Oct 26, 2024 pm 01:24 PM

How to Retrieve the Last Insert ID in GORM 2.0?

GORM 2.0 で最後の挿入 ID を取得する方法

以前の GORM バージョンでは、Begin() メソッドは次の sql.Tx オブジェクトを返しました。 LastInsertId() メソッドを使用して最後の挿入 ID を取得できるようになりました。ただし、GORM 2.0 では、このメソッドは削除されました。

GORM 2.0 での最後の挿入 ID の取得

GORM 2.0 では、最後の挿入 ID を取得する方法は 2 つあります。 :

1. db.Last() の使用:

データベースに行を挿入した後、db.Last() 関数を呼び出すことができます。これにより、モデルに新しく割り当てられた ID:

<code class="go">    type User struct {
        gorm.Model
        Name string
    }

    user1 := User{Name: "User One"}

    _ = db.Transaction(func(tx *gorm.DB) error {
        tx.Create(&amp;user1)
        return nil
    })

    db.Last(&amp;user1)

    fmt.Printf("User one ID: %d\n", user1.ID)</code>
ログイン後にコピー

2 が設定されます。モデルの ID に直接アクセスする:

または、挿入後にモデルの ID フィールドに直接アクセスすることもできます。 ID は挿入操作中に自動的に入力されます:

<code class="go">    type User struct {
        gorm.Model
        Name string
    }

    user1 := User{Name: "User One"}

    _ = db.Transaction(func(tx *gorm.DB) error {
        tx.Create(&amp;user1)
        return nil
    })

    fmt.Printf("User one ID: %d\n", user1.ID)</code>
ログイン後にコピー

推奨事項:

2 番目のアプローチ (モデルの ID に直接アクセスする) を使用することをお勧めします。追加の db.Last() 呼び出しが不要になるためです。これにより、特に大量の挿入操作のパフォーマンスが向上します。

以上がGORM 2.0 で最後の挿入 ID を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Mar 03, 2025 pm 05:17 PM

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

Beegoフレームワークのページ間で短期情報転送を実装する方法は? Beegoフレームワークのページ間で短期情報転送を実装する方法は? Mar 03, 2025 pm 05:22 PM

Beegoフレームワークのページ間で短期情報転送を実装する方法は?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

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

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

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

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? Mar 03, 2025 pm 05:18 PM

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

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? Mar 10, 2025 pm 03:20 PM

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

Go言語でファイルを便利に書く方法は? Go言語でファイルを便利に書く方法は? Mar 03, 2025 pm 05:15 PM

Go言語でファイルを便利に書く方法は?

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか? Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか?

See all articles