ホームページ PHPフレームワーク ThinkPHP ThinkPHP5 でのトランザクション操作

ThinkPHP5 でのトランザクション操作

Jan 30, 2020 pm 10:49 PM

ThinkPHP5 でのトランザクション操作

トランザクション処理を使用する場合、データベース エンジンはトランザクション処理をサポートする必要があります。たとえば、MySQL の MyISAM はトランザクション処理をサポートしていないため、InnoDB エンジンを使用する必要があります。

ThinkPHP5.0

トランザクション メソッドを使用してデータベース トランザクションを操作します。例外が発生すると、自動的にロールバックされます。例:

トランザクションを自動的に制御する処理

Db::transaction(function(){
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});
ログイン後にコピー

たとえば、トランザクションを手動で制御することもできます。

// 启动事务Db::startTrans();try{
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();    } catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}
ログイン後にコピー

ThinkPHP5.1

最も簡単な方法は、トランザクション メソッドを使用してデータベース トランザクションを操作します。クロージャ内のコードが実行されると、例外が自動的にロールバックされます。例:

Db::transaction(function () {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});
ログイン後にコピー

トランザクションを手動で制御することもできます。例:

// 启动事务Db::startTrans();try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}
ログイン後にコピー

トランザクション中は次の点に注意してください。操作を行う場合は、データベース接続が同じ接続を使用していることを確認してください。

V5.1.13 以降、MySQL の XA トランザクションをサポートしてグローバル (分散) トランザクションを実装できるようになりました。使用できるのは:

Db::transactionXa(function () {
    Db::connect('db1')->table('think_user')->delete(1);
    Db::connect('db2')->table('think_user')->delete(1);}, [Db::connect('db1'),Db::connect('db2')]);
ログイン後にコピー

データ テーブル エンジンが InnoDB であることを確認し、XA トランザクションを有効にするサポート。

以上がThinkPHP5 でのトランザクション操作の詳細内容です。詳細については、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)

Think BookとThinkPadの違いは何ですか Think BookとThinkPadの違いは何ですか Mar 06, 2025 pm 02:16 PM

Think BookとThinkPadの違いは何ですか

SQLインジェクションチュートリアルを防ぐ方法 SQLインジェクションチュートリアルを防ぐ方法 Mar 06, 2025 pm 02:10 PM

SQLインジェクションチュートリアルを防ぐ方法

ThinkPhpによって開発されたソフトウェアのインストール方法チュートリアルをインストールする方法 ThinkPhpによって開発されたソフトウェアのインストール方法チュートリアルをインストールする方法 Mar 06, 2025 pm 02:09 PM

ThinkPhpによって開発されたソフトウェアのインストール方法チュートリアルをインストールする方法

thinkphpの脆弱性を修正する方法thinkphpの脆弱性に対処する方法 thinkphpの脆弱性を修正する方法thinkphpの脆弱性に対処する方法 Mar 06, 2025 pm 02:04 PM

thinkphpの脆弱性を修正する方法thinkphpの脆弱性に対処する方法

ThinkPhpを使用してコマンドラインアプリケーションを構築するにはどうすればよいですか? ThinkPhpを使用してコマンドラインアプリケーションを構築するにはどうすればよいですか? Mar 12, 2025 pm 05:48 PM

ThinkPhpを使用してコマンドラインアプリケーションを構築するにはどうすればよいですか?

サーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項は何ですか? サーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項は何ですか? Mar 18, 2025 pm 04:54 PM

サーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項は何ですか?

ThinkPhpの脆弱性に対処する方法は? ThinkPhpの脆弱性に対処する方法は? Mar 06, 2025 pm 02:08 PM

ThinkPhpの脆弱性に対処する方法は?

ThinkPhpによってデータベースに接続する方法の詳細な手順 ThinkPhpによってデータベースに接続する方法の詳細な手順 Mar 06, 2025 pm 02:06 PM

ThinkPhpによってデータベースに接続する方法の詳細な手順

See all articles