トランザクションでは、ステートメントが 1 つの単位として実行されることがわかります。トランザクション内のいずれかの操作が失敗した場合、トランザクション全体が失敗するため、ロールバックする必要があります。ロールバックしないと、ステートメントによって行われた変更はデータベースに保存されます。トランザクションを実装するために、MySQL は次のステートメントを提供します。 -
名前が示すように、トランザクションはこのステートメントから開始されます。基本的に、これは、トランザクションが終了するまで後続のステートメントを単一の作業単位として扱う必要があることを MySQL に通知します。
COMMIT ステートメントは、データベースへの変更をコミットします。つまり、トランザクションが正常に完了したら、COMMIT コマンドを発行して、関係するすべてのテーブルへの変更を有効にする必要があります。
ROLLBACK コマンドは、ステートメントによって加えられた変更をすべて元に戻し、データベースを以前の状態 (トランザクション開始時の状態) に戻します。
次に、MySQL トランザクションの実装を示す例を示します。
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.06 sec)
この例では、トランザクションは START TRANSACTION ステートメントによって開始されます。次に、2 つの INSERT ステートメントを実行し、その後に COMMIT ステートメントを実行します。 COMMIT ステートメントはデータベースへの変更を保存します。これは、値がテーブル -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec) mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Harshit','History',48); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)
に挿入されたことを示す次の結果セットから確認できます。この例では、トランザクションは次によって開始されます。 START TRANSACTION ステートメント。次に、2 つの INSERT ステートメントを実行し、その後に ROLLBACK ステートメントを実行します。 ROLLBACK ステートメントは、データベースに加えられた変更を元に戻します。これは、テーブル -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 1 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)
以上がMySQL トランザクションを実装するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。