MySQLの総務
MySQLのトランザクションは、主に大規模なデータ操作、プロセスの高い複雑のために使用されています。たとえば、人事管理システムでは、あなたはスタッフの基本的な情報を削除する必要があり、データベース操作文は、トランザクションを構成するように、スタッフは、などのメール、記事、などの関連情報を、削除する必要があり、つまり、人を削除します!
- 唯一のMySQLデータベースエンジンでのみサポート取引InnoDBデータベースやテーブルを使用していました。
- トランザクションは、SQL文の大部分は、すべての実行またはすべての実行されていないいずれかのことを保証するために、データベースの整合性を維持するために使用することができます。
- 挿入、更新、削除の文のトランザクション管理
一般的に言えば、トランザクションは4つのアトミック条件(ACID)::(満たしている必要があります。また、不可分として知られているtomicity、)、一貫性(Cの onsistency)、分離(Iのも独立として知られているゾル化、)、永続性を(D urability)。
-
原子性: 1つのトランザクション(トランザクション)内のすべての操作がすべて完了または完了されていないか、リンクの途中で終わりません。トランザクションの実行中にエラーが発生したトランザクションが同じことを行ったことがないとして、それは、トランザクションの開始前の状態に(ロールバック)にロールバックされます。
-
一貫性:トランザクションが開始され、トランザクションの終了後に、データベースの整合性が破損していない前に。これは、書き込まれたデータは、データの正確性を含んでいるデフォルトのルールのすべて、に完全に準拠しなければならないことを意味し、フォローアップのデータベースのシリーズは、自然発生的にスケジュールされた作業を完了することができます。
-
単離:データベースは、複数の同時トランザクションを同時読み出しを可能にし、機能を記述し、そのデータを変更する複数のトランザクションが同時に矛盾したデータにクロス実行結果を実行するとき、分離を防止することができます。非コミット読み取り(非コミット読み取り)、コミットを読む(コミット読み取り)、反復可能読み取り(反復可能読み取り)及びシリアライズ(直列化)を含む異なるレベルに分割トランザクション分離。
-
耐久性:トランザクションの後、データへの変更は、システム障害が失われることはありません場合でも、永続的です。
- それは、SQL文を実行することです後にMySQLのコマンドライン・トランザクションが自動的に提出されたデフォルト設定では、操作が直ちに実行されますCOMMIT。そのため、明示的に無効にするために使用されるコマンドのSET AUTOCOMMIT = 0、コマンドを開始するか、トランザクションを開始、または実行使用してトランザクション開くことをお勧め現在のセッションを自動コミット。
-
トランザクション制御文:
-
BEGIN TRANSACTIONまたはトランザクションを明示的に開くSTART。
-
また、COMMIT WORKを使用することができCOMMITが、二つは等価です。COMMITは、トランザクションをコミットし、データベースは、すべての変更が永久になってきました。
-
ROLLBACKもROLLBACKのWORKを使用することができますが、両者は同等です。エンド・ユーザー・トランザクションをロールバックし、道の下にコミットされていないすべての変更を撤回します。
-
SAVEPOINT識別子、SAVEPOINTは、あなたがトランザクションでセーブポイントを作成することができ、トランザクションは複数のセーブポイントを持つことができます。
-
何がポイントの保存指定がない場合にRELEASE SAVEPOINTの識別子例外がスローされますステートメントを実行し、セーブポイントトランザクションを削除します。
-
トランザクションの識別子にROLLBACKをマーカーにロールバックされます。
-
SET TRANSACTIONは、トランザクション分離レベルを設定します。InnoDBストレージエンジンはCOMMITTED、REPEATABLE READを読むUNCOMMITTED読んでいるトランザクション分離レベルを提供し、SERIALIZABLE。
MYSQL取引二つの主な方法があります。
BEGIN、ROLLBACKと1は、達成するためにCOMMIT
- BEGIN トランザクションを開始
- ROLLBACKの トランザクションのロールバック
- COMMIT トランザクションの確認を
2、MySQLの自動コミットモードを変更するために直接使用するSET:
- SETのAUTOCOMMIT = 0は、 自動送信を無効にします
- = 1のSET AUTOCOMMITは 、自動コミットを有効にします
-
予約されたスポットを使用SAVEPOINT
この方法はまた、ネストされたトランザクションとして知られているデータベーストランザクション処理にセーブポイント「サブトランザクション」(サブトランザクション)が実装されています。トランザクションはセーブポイントを作成する前に、トランザクション全体を放棄する必要はありません変更に影響を与えることなく、セーブポイントにロールバックすることができます。
あなたがバックにロールする文の前に、操作の数を実行するときにROLLBACKロールバックの使用量は、保持ポイントSAVEPOINTを設定することができます。
SAVEPOINTを使用してください
セーブポイントSAVEPOINT ; //セーブポイントを宣言 セーブポイントへのロールバックを、セーブポイントまでロールバック//
SAVEPOINTを削除
保持ポイントとトランザクション処理が完了した後、自動的に(ROLLBACKを実行するか、COMMIT)をリリース。
MySQL5ので、あなたは使用することができます。
SAVEPOINTはRELEASEをセーブポイント; //は、指定した保存ポイントを削除します
-