ホームページ >データベース >mysql チュートリアル >SQL トランザクション: データの整合性と一貫性の確保

SQL トランザクション: データの整合性と一貫性の確保

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-28 00:41:09508ブラウズ

SQL Transactions: Ensuring Data Integrity and Consistency

SQL でのトランザクションの説明

SQL の

トランザクション は、単一の論理的な作業単位として実行される 1 つ以上の SQL 操作のシーケンスです。トランザクションにより、システム障害やエラーが発生した場合でも、データベース内のデータの一貫性、完全性、信頼性が確保されます。これらはデータベースの安定性を維持するために ACID プロパティ に従います。


トランザクションの主な特徴

  1. 原子性:
    トランザクション内のすべての操作が正常に完了することを保証します。いずれかの操作が失敗すると、トランザクション全体が初期状態にロールバックされます。

  2. 一貫性:
    データベースがある有効な状態から別の有効な状態に確実に移行します。トランザクションは、制約やトリガーなど、定義されたすべてのルールを尊重する必要があります。

  3. 隔離:
    同時に発生する複数のトランザクションが相互に干渉しないようにします。各トランザクションは、システム内の唯一のトランザクションであるかのように動作します。

  4. 耐久性:
    トランザクションがコミットされると、システムがクラッシュした場合でも、その変更が永続的に保たれるようにします。


トランザクション制御ステートメント

  1. 取引を開始: 新しいトランザクションを開始します。
   BEGIN TRANSACTION;
  1. コミット: トランザクション中に行われたすべての変更をデータベースに永続的に保存します。
   COMMIT;
  1. ロールバック: トランザクション中に行われたすべての変更を元に戻し、データベースを以前の状態に戻します。
   ROLLBACK;
  1. セーブポイント: トランザクション内にセーブポイントを作成し、トランザクション全体に影響を与えることなく特定のポイントにロールバックします。
   SAVEPOINT SavePointName;
  1. セーブポイントへのロールバック: トランザクションを指定されたセーブポイントに戻します。
   ROLLBACK TO SavePointName;

トランザクションの例

シナリオ: 2 つの銀行口座間で資金を送金します。

BEGIN TRANSACTION;

-- Deduct from Account A
UPDATE Accounts
SET Balance = Balance - 100
WHERE AccountID = 1;

-- Add to Account B
UPDATE Accounts
SET Balance = Balance + 100
WHERE AccountID = 2;

-- Check for errors and commit the transaction
IF @@ERROR = 0
    COMMIT;
ELSE
    ROLLBACK;

説明:

    トランザクションは BEGIN TRANSACTION を使用して開始されます。
  1. アカウント A の残高が減り、アカウント B が増えます。
  2. エラーが発生しない場合は、COMMIT によって変更が保存されます。それ以外の場合、ROLLBACK はすべての変更を元に戻します。

ネストされたトランザクション

トランザクションはネストできますが、最も外側の COMMIT のみが変更を完了します。ただし、各 ROLLBACK はトランザクション階層全体に影響します。


   BEGIN TRANSACTION;

ACID プロパティの詳細

  1. 原子性: トランザクション内のいずれかのステップが失敗すると、トランザクション全体が失敗します。例えば:
   COMMIT;
  1. 一貫性: データベースが外部キー制約などのすべてのルールに従っていることを確認します。例えば:
   ROLLBACK;
  1. 隔離:

    トランザクションは相互に干渉しません。分離レベルには次のものが含まれます:

    • コミットされていない変更を読み取る: トランザクションはコミットされていない変更を読み取ることができます。
    • コミットされた読み取り: トランザクションはコミットされた変更のみを参照します。
    • Repeatable Read: トランザクション内で同じデータが確実に読み取られるようにします。
    • Serializable: 他のトランザクションが影響を受ける行にアクセスできないようにします。
  2. 耐久性:

    一度コミットすると、変更は永続的になります。 COMMIT により、クラッシュした場合でもデータが確実に保存されます。


トランザクションのユースケース

  • 銀行システム: 原子的な資金移動を保証します。
  • 電子商取引: 在庫が更新された場合にのみ注文が作成されるようにします。
  • 在庫管理: 在庫調整中の部分的な更新を防ぎます。

取引のメリット

  • データの一貫性と完全性を保証します。
  • エラー回復メカニズムを提供します。
  • 分離レベルを通じてデータベースの同時操作をサポートします。

取引のデメリット

  • ロック機構によりパフォーマンスが低下する可能性があります。
  • 管理を誤ると、デッドロックやリソースの競合が発生する可能性があります。

トランザクションはデータベース システムの基礎であり、重要な操作全体にわたってデータの信頼性、一貫性、正確性を保証します。

こんにちは、アバイ・シン・カタヤットです!
私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
ビジネス用メールアドレス kaashshorts28@gmail.com までお気軽にご連絡ください。

以上がSQL トランザクション: データの整合性と一貫性の確保の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。