MySQL のネストされたトランザクション
他の特定のデータベース管理システムとは異なり、MySQL はネストされたトランザクションをネイティブにサポートしません。これは、既存のトランザクション内に新しいトランザクションを作成できないことを意味します。ただし、MySQL で使用される一般的なストレージ エンジンである MySQL InnoDB は、セーブポイントを使用してネストされたトランザクションのような動作を管理するソリューションを提供します。
InnoDB の SAVEPOINTS
セーブポイントを使用すると、トランザクション内に一時的なマイルストーンを作成できます。セーブポイントを作成して名前を付け、そのセーブポイントにロールバックして、その後に行われた操作を元に戻すことができます。これにより、ネストされたトランザクションと同様のレベルの細分性と柔軟性が提供されます。
SAVEPOINTS の使用方法
MySQL でセーブポイントを使用するには、次の手順に従います。
例
次の例を考えてみましょう:
CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; START TRANSACTION; INSERT INTO t_test VALUES (1); SELECT * FROM t_test; id --- 1 SAVEPOINT tran2; INSERT INTO t_test VALUES (2); SELECT * FROM t_test; id --- 1 2 ROLLBACK TO tran2; SELECT * FROM t_test; id --- 1 ROLLBACK; SELECT * FROM t_test; id ---
この例では、セーブポイントにロールバックする方法を示します。 (tran2) し、トランザクション全体をロールバックします。
以上がMySQL はセーブポイントを使用してネストされたトランザクションをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。