MySQL トランザクションは主に、大規模な操作と複雑さの高いデータを処理するために使用されます。例えば、人事管理システムにおいて、個人を削除する場合、その個人の基本情報を削除するとともに、その個人に関連するメールボックスや記事などの情報も削除する必要があります。このようにして、これらのデータベースは、操作ステートメントはトランザクションを構成します。
MySQL では、Innodb データベース エンジンを使用するデータベースまたはテーブルのみがトランザクションをサポートします
トランザクション処理を使用して、データベースの整合性を維持し、SQL ステートメントのバッチがすべて実行されるか、まったく実行されないかを確認できます。
トランザクションは、挿入、更新、削除ステートメントを管理するために使用されます
一般的に言えば、トランザクションは 4 つの条件 (ACID) を満たす必要があります: アトミック性 (原子性)、一貫性 (安定性)、分離性 (分離)、耐久性 (信頼性)
1. トランザクションの原子性: 一連のトランザクションは成功するか取り消されます。
2. 安定性: 不正なデータ (外部キー制約など) がある場合、トランザクションは取り消されます。
3. 分離: トランザクションは独立して実行されます。ある取引の結果が他の取引に影響を与える場合、他の取引は撤回されます。トランザクションを 100% 分離するには、速度を犠牲にする必要があります。
4. 信頼性: ソフトウェアまたはハードウェアがクラッシュした後、InnoDB データ テーブル ドライバーはログ ファイルを使用して再構築および変更します。信頼性と高速性を同時に実現することはできません。innodb_flush_log_at_trx_commit オプションは、トランザクションをログに保存するタイミングを決定します。
MySQL コンソールでトランザクションを使用して操作します
1、トランザクションを開始します
トランザクションを開始します
2、セーブポイントを作成します
セーブポイント セーブポイント名
3、操作します
4、あなたロールを返すことができます。問題がなければ送信できます。問題がある場合はロールバックしてください。
PHP でのトランザクションの使用例
<?php $handler=mysql_connect("localhost","root","password"); mysql_select_db("task"); mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行 mysql_query("BEGIN");//开始事务定义 if(!mysql_query("insert into trans (id) values('2')")) { mysql_query("ROLLBACK");//判断当执行失败时回滚 } if(!mysql_query("insert into trans (id) values('4')")) { mysql_query("ROLLBACK");//判断执行失败回滚 } mysql_query("COMMIT");//执行事务 mysql_close($handler); ?>
上記は MySQL トランザクションの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。