logo

SQLトランザクション

トランザクションは、一連のタスクを単一の実行ユニットにグループ化します。各トランザクションは特定のジョブで始まり、グループ内のすべてのタスクが正常に完了すると終了します。いずれかのタスクが失敗すると、トランザクションは失敗します。したがって、トランザクションには次の 2 つの結果のみが含まれます。 成功 または 失敗

アカウント A からアカウント B に 0 を送金するトランザクションの例:

1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>

手順が不完全な場合、トランザクションは失敗します。データベース トランザクションは、定義上、アトミックで、一貫性があり、分離されており、永続的である必要があります。
これらは一般に次のように知られています プロパティ。これらのプロパティにより、競合することなく複数のトランザクションを同時に実行できます。



トランザクションのプロパティ

  • 原子性: トランザクションの結果は、完全に成功する場合もあれば、完全に失敗する場合もあります。トランザクションの一部が失敗した場合は、トランザクション全体をロールバックする必要があります。
  • 一貫性: トランザクションは、データベースをある有効な状態から別の有効な状態に移動することによって整合性制限を維持します。
  • 分離: 同時トランザクションは相互に分離され、データの正確性が保証されます。
  • 耐久性: トランザクションがコミットされると、システム障害が発生した場合でも、その変更は有効のままになります。

SQLを使用してトランザクション制御コマンドを実装するにはどうすればよいですか?

トランザクションの制御には次のコマンドが使用されます。これらのステートメントはテーブルの作成中には使用できず、次のような DML コマンドでのみ使用されることに注意することが重要です。 入れる アップデート 、 そして 消去

vlc ダウンロード youtube

トランザクション開始コマンド

これは、明示的またはローカル トランザクションの開始点を示します。

構文:

トランザクションを開始します トランザクション名 ;

SET TRANSACTION コマンド

トランザクション分離レベルやアクセス モードなど、現在のトランザクションのプロパティの値は、MySQL の SET TRANSACTION ステートメントを使用して設定されます。

構文:

トランザクションの設定 [ 読み取り 書き込み |読み取り専用];

COMMITコマンド

単一トランザクション内のすべてのステートメントが正常であれば、すべての変更がデータベースにまとめて記録されます。 関与する 。 COMMIT コマンドは、最後の COMMIT または ROLLBACK コマンド以降のすべてのトランザクションをデータベースに保存します。

ループ 1 ~ 10 の bash

構文:

専念;

例:

サンプルテーブル1

出力

出力

以下は、age = 20 のレコードをテーブルから削除し、データベース内の変更を COMMIT する例です。

クエリ

DELETE FROM Student WHERE AGE = 20; COMMIT;>

出力

したがって、テーブルから 2 行が削除され、SELECT ステートメントは次のようになります。

出力

出力

ROLLBACKコマンド

SQL グループ化ステートメントのいずれかでエラーが発生した場合は、すべての変更を中止する必要があります。変更を元に戻すプロセスは次のように呼ばれます。 ロールバック 。このコマンドは、最後に COMMIT または ROLLBACK コマンドが発行されて以降のトランザクションを元に戻すためにのみ使用できます。

ROLLBACK コマンドの構文:

ロールバック;

例:

上記の例から サンプルテーブル1
age = 20 のレコードをテーブルから削除し、データベース内の変更をロールバックします。

クエリ

DELETE FROM Student WHERE AGE = 20; ROLLBACK;>

出力

出力

出力

セーブポイントコマンド

セーブポイント トランザクションのグループ内に ROLLBACK するポイントを作成します。
SAVEPOINT は、トランザクション全体をロールバックせずに、トランザクションを特定のポイントまでロールバックできるトランザクション内のポイントです。

セーブポイント コマンドの構文:

セーブポイント セーブポイント_NAME;

このコマンドは、全トランザクションのうちSAVEPOINTの作成時にのみ使用されます。
一般に、ROLLBACK はトランザクションのグループを元に戻すために使用されます。

Base64 JavaScript デコード

セーブポイント コマンドにロールバックするための構文:

SAVEPOINT_NAME にロールバックします。

いつでも任意の SAVEPOINT に ROLLBACK して、適切なデータを元の状態に戻すことができます。

例:

上記の例から サンプルテーブル1 , age = 20 のレコードをテーブルから削除し、セーブポイントを保持してデータベース内の変更をロールバックします。

クエリ

SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>

ここで、SP1 は、削除前に最初に SAVEPOINT が作成されます。この例では、1 つの削除が行われています。
再度削除すると、SAVEPOINT SP2 が作成されます。

抽象クラスはコンストラクターを持つことができますか

出力

出力

出力

削除が行われました。気が変わって、削除前の SP1 として指定したセーブポイントにロールバックすることにしたとします。
このステートメントによって削除は取り消されます。

クエリ

ROLLBACK TO SP1; //Rollback completed>

出力

出力

出力

RELEASE SAVEPOINT コマンド

このコマンドは、作成した SAVEPOINT を削除するために使用されます。

構文:

セーブポイント SAVEPOINT_NAME を解放します

SAVEPOINT が解放されると、ROLLBACK コマンドを使用して最後の SAVEPOINT 以降に実行されたトランザクションを元に戻すことはできなくなります。
これはデータベース トランザクションを開始するために使用され、その後のトランザクションの特性を指定するために使用されます。

結論

  • SQL ステートメントはトランザクションを使用してグループ化されます。
  • 彼らは、すべての変更が行われるか、まったく変更が行われないかのどちらかを約束します。
  • 信頼性は、原子性、一貫性、分離性、耐久性といった ACID の品質によって保証されます。
  • BEGIN TRANSACTION でトランザクションを開始し、COMMIT または ROLLBACK でトランザクションを終了して、変更を完了または元に戻します。