2009-03-30 15 views
-1

単一のテーブルで、ある口座から別の口座にデータを転送する方法のヘルプが必要です。 この顧客では、ドロップダウンリストから自分の口座番号を取得します(セッションを通じて自動的に来ます)。顧客はテキストボックスに宛先口座番号を書き込まなければなりません。また、移転する金額は別のテキストボックスに書き込まれます。宛先口座番号と残高額を確認する必要があります。トランザクションテーブルのコーディング

Customer_Accountテーブル:SB MinBalance 500、SV 1000

+-----------+--------+--------+---------+--------------+ 
| AccountId | UserId | Status | Balance | AccountCode | 
+-----------+--------+--------+---------+--------------+ 
| 101 | xyz | A | 2000 | SB ->Savings | 
+-----------+--------+--------+---------+--------------+ 
| 102 | abc | A | 3000 | SV->Current | 
+-----------+--------+--------+---------+--------------+ 
| 103 | yxz | A | 4000 | SI->Joint | 
+-----------+--------+--------+---------+--------------+ 

、SI 2000は

トランザクションテーブルを持っている必要があります。この場合はたAccountId 101で

TransactionID, AccountID, TransactionType, Amount, DOT, UserID ,SourceOrDestAccountId ,TransferFlag,Balance 

は、彼の1000年を転送したいですAccountIdへの金額102 AccountId 101は借方記入され、AccountId 102は貸方記入されます。

+2

質問に回答したユーザーの礼儀として、他の質問に回答をマークして、問題が解決したことを確認してください。 –

答えて

1

「取引」のテキストブックを確認し、明示的にトランザクションを開始する方法を参照してください。トランザクション内で一連のステートメントをラップする方法がわかったら、必要なチェックをすべて実行し、問題がある場合はロールバックするだけです。

ほとんどの銀行で負の残高が認められていますが、私はあなたの宿題ではそうではないと推測しています。転送に十分な資金がなければ、失敗するはずです。それが本当であれば、Amount列の制約が役立ちます。その後、明示的にチェックする必要はありません。あなたが負の残高を許したいのであれば、私はおそらくこのようなコードを書いているでしょう:(擬似コード。これを手渡そうとはしません。あなたが学びたいならば、自分で仕事をする必要があります):

スタートトランザクション

アップデート元口座取引

をロールバック、それがある場合は、ソースアカウントの金額が0未満であるかどうかを確認するために

チェックを転送されている量によって量を減少します

転送先のアカウントを更新して、転送される金額で金額を加算します。

トランザクションをコミットしてください。

また、適切と思われるその他のエラーチェックも含めてください。どのようにこれを行うかは、特定のデータベースに依存します。

+0

こんにちはこれは家事ではありません......あなたの理解のために私は簡単な例を与えました。 – user59637

+0

おそらく宿題としてタグ付けされるべきではありません。何のRDBMSを使用していますか? –

+0

私は、「トランザクション」を2つの異なるコンテキストで使用していると思います。 OPは、バンクセンスの言葉を使っています。トムの応答はデータベースの意味でそれを使用しています。 OPが探している解決策は、ある口座から別の口座へ資金を移すという行動をモデル化するために、どのような値がTransactionテーブルに入るのかと考えています。 –

関連する問題