Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:トランザクション作成 | セクション
SQL最適化とクエリ機能
セクション 1.  3
single

single

bookチャレンジ:トランザクション作成

メニューを表示するにはスワイプしてください

銀行システムで2つの口座間で資金を移動する際には、送金元口座からの引き落としと送金先口座への加算が、単一かつ不可分な操作として同時に行われる必要があります。ここでトランザクションの概念が重要となります。トランザクションは複数のSQL文をまとめて実行し、すべてが成功するか、または一切反映されないようにすることで、原子性を維持します。

資金移動には、bank_accounts テーブルを使用します。このテーブルには account_idowner_namebalance のカラムがあります。トランザクションは以下の手順で実施します:

  • トランザクション開始のために BEGIN 文を実行
  • 送金元口座に十分な残高があるかを確認
  • 十分な残高がある場合、送金元口座から金額を差し引き、送金先口座に加算
  • 送金元口座の残高が不足している場合、トランザクションをロールバックし、すべての残高を変更前の状態に戻す
  • すべての手順が成功した場合のみ、トランザクションをコミット

この方法により、部分的な更新が発生せず、エラーが発生した場合でもシステムの信頼性が保たれます。

タスク

スワイプしてコーディングを開始

bank_accounts テーブルから指定された金額を一方の口座から他方の口座へ送金する SQL トランザクションの作成。トランザクションはアトミックでなければならず、送金元口座の残高が不足している場合はロールバックされる必要があります。

  • 送金元口座の残高を取得し、送金額以上であることを確認。
  • 十分な残高がある場合、送金元口座から送金額を減算。
  • 送金先口座に送金額を加算。
  • transfers テーブルに送金記録を保存。
  • 送金元口座の残高が不足している場合は、トランザクションをロールバックしエラーを発生させること。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  3
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt