T-sql-transactions
T-SQL-トランザクション
- トランザクション*は、データベースに対して実行される作業単位です。 トランザクションとは、ユーザーが手動で実行する場合でも、何らかのデータベースプログラムで自動的に実行する場合でも、論理的な順序で実行される作業の単位またはシーケンスです。
トランザクションは、データベースに対する1つ以上の変更の伝播です。 たとえば、レコードを作成する場合、レコードを更新する場合、またはテーブルからレコードを削除する場合、テーブルでトランザクションを実行します。 データの整合性を確保し、データベースエラーを処理するには、トランザクションを制御することが重要です。
実際には、多くのSQLクエリを1つのグループにまとめ、トランザクションの一部としてそれらすべてをまとめて実行します。
トランザクションのプロパティ
トランザクションには、通常、頭字語ACIDで参照される次の4つの標準プロパティがあります-
- Atomicity -ワークユニット内のすべての操作が正常に完了することを保証します。それ以外の場合、トランザクションは失敗した時点で中止され、以前の操作は以前の状態にロールバックされます。
- 一貫性-トランザクションが正常にコミットされると、データベースの状態が適切に変更されるようにします。
- 分離-トランザクションが相互に独立して透過的に動作できるようにします。
- 耐久性-システム障害の場合に、コミットされたトランザクションの結果または効果が持続することを保証します。
トランザクション制御
トランザクションを制御するために使用される次のコマンドがあります-
- COMMIT -変更を保存します。
- ROLLBACK -変更をロールバックします。
- SAVEPOINT -ROLLBACKするトランザクションのグループ内にポイントを作成します。
- SET TRANSACTION -トランザクションに名前を付けます。
トランザクション制御コマンドは、DMLコマンドのINSERT、UPDATE、およびDELETEでのみ使用されます。 これらの操作はデータベースで自動的にコミットされるため、テーブルの作成中または削除中は使用できません。
MS SQL Serverでトランザクション制御コマンドを使用するには、「begin tran」でトランザクションを開始するか、トランザクションコマンドを開始する必要があります。そうしないと、これらのコマンドは機能しません。
COMMITコマンド
COMMITコマンドは、トランザクションによって呼び出された変更をデータベースに保存するために使用されるトランザクションコマンドです。 このコマンドは、最後のCOMMITまたはROLLBACKコマンド以降のすべてのトランザクションをデータベースに保存します。
構文
COMMITコマンドの構文は次のとおりです。
例
次のレコードを持つCUSTOMERSテーブルを検討してください。
次のコマンド例は、年齢= 25のテーブルからレコードを削除し、データベースの変更をコミットします。
その結果、テーブルから2つの行が削除され、SELECTステートメントは次の出力を生成します。
ROLLBACKコマンド
ROLLBACKコマンドは、データベースにまだ保存されていないトランザクションを取り消すために使用されるトランザクションコマンドです。 このコマンドは、最後のCOMMITまたはROLLBACKコマンドが発行されてからトランザクションを元に戻すためにのみ使用できます。
構文
ROLLBACKコマンドの構文は次のとおりです。
例
次のレコードを持つCUSTOMERSテーブルを検討してください。
次のコマンド例は、年齢= 25のテーブルからレコードを削除し、データベースの変更をロールバックします。
その結果、削除操作はテーブルに影響せず、SELECTステートメントは次の結果を生成します。
SAVEPOINTコマンド
SAVEPOINTは、トランザクション全体をロールバックせずにトランザクションを特定のポイントにロールバックできるトランザクションのポイントです。
構文
SAVEPOINTコマンドの構文は次のとおりです。
このコマンドは、トランザクションステートメント間のSAVEPOINTの作成でのみ機能します。 ROLLBACKコマンドは、トランザクションのグループを元に戻すために使用されます。
以下は、SAVEPOINTにロールバックするための構文です。
次の例では、CUSTOMERSテーブルから3つの異なるレコードを削除します。 削除するたびにSAVEPOINTを作成する必要があります。これにより、いつでも任意のSAVEPOINTにロールバックして、適切なデータを元の状態に戻すことができます。
例
次のレコードを持つCUSTOMERS表を考慮してください-
以下は、一連の操作です-
3つの削除が行われましたが、考えを変え、SP2として識別したSAVEPOINTにロールバックすることにしました。 SP2は最初の削除後に作成されたため、最後の2つの削除は元に戻されます-
SP2にロールバックしてから最初の削除のみが行われたことに注意してください。
6行が選択されました。
SET TRANSACTIONコマンド
SET TRANSACTIONコマンドを使用して、データベーストランザクションを開始できます。 このコマンドは、後続のトランザクションの特性を指定するために使用されます。
構文
以下は、SET TRANSACTIONの構文です。