编码事务表

时间:2009-03-30 12:49:02

标签: sql transactions

我需要有关如何将数据从一个帐户no转移到另一个帐户no的单表中的帮助。 在此客户将从下拉列表中获取他的帐户(它将通过他的会话自动进入),并且客户必须在文本框中写入目标帐户no,并且他正在转移的金额将写在另一个文本框中。在转移金额,目的地之前帐户号码,余额金额应予以验证。

Customer_Account表:

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

对于SB MinBalance 500,SV 1000,SI 2000应具有

交易表:

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

在此如果AccountId 101想要将他的1000金额转移到AccountId 102 将记入AccountId 101,并记入AccountId 102。

1 个答案:

答案 0 :(得分:1)

检查您的教科书中的“交易”,并了解如何明确开始交易。一旦你知道如何在事务中包装一系列语句,只需要执行所有必要的检查并在出现问题时回滚。

虽然大多数银行都允许负余额,但我猜你的作业并非如此 - 如果他们没有足够的资金来转移,那么就应该失败。如果这是真的,那么对Amount列的约束可能是有用的。然后你不需要明确检查它。如果你想允许负余额,那么我可能会编写类似这样的代码:(伪代码。我不会尝试这样做。如果你想学习,你需要自己做一些工作。):< / p>

开始交易

更新源帐户,将金额减去转帐金额

检查源帐户上的金额是否小于0.如果是,则回滚事务

更新目标帐户以按金额递增金额

提交交易

还包括您认为合适的任何其他错误检查。如何执行此操作取决于您的特定数据库。