MySQL トランザクションを実装するにはどうすればよいでしょうか?

WBOY
リリース: 2023-09-02 11:53:02
転載
1133 人が閲覧しました

MySQL トランザクションを実装するにはどうすればよいでしょうか?

トランザクションでは、ステートメントが 1 つの単位として実行されることがわかります。トランザクション内のいずれかの操作が失敗した場合、トランザクション全体が失敗するため、ロールバックする必要があります。ロールバックしないと、ステートメントによって行われた変更はデータベースに保存されます。トランザクションを実装するために、MySQL は次のステートメントを提供します。 -

START TRANSACTION

名前が示すように、トランザクションはこのステートメントから開始されます。基本的に、これは、トランザクションが終了するまで後続のステートメントを単一の作業単位として扱う必要があることを MySQL に通知します。

COMMIT

COMMIT ステートメントは、データベースへの変更をコミットします。つまり、トランザクションが正常に完了したら、COMMIT コマンドを発行して、関係するすべてのテーブルへの変更を有効にする必要があります。

ROLLBACK

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 サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!