Sql 对事务表进行编码

Sql 对事务表进行编码,sql,transactions,Sql,Transactions,我需要帮助如何将数据从一个帐户号转移到单个表中的另一个帐户号。 在此情况下,客户将从下拉列表中获取其账号(该账号将通过其会话自动发送),客户必须在文本框中写入目标账号,并且他正在转账的金额将写入另一个文本框。在转账金额之前,应验证目标账号和余额金额 客户账户表: +-----------+--------+--------+---------+--------------+ | AccountId | UserId | Status | Balance | AccountCode | +---

我需要帮助如何将数据从一个帐户号转移到单个表中的另一个帐户号。 在此情况下,客户将从下拉列表中获取其账号(该账号将通过其会话自动发送),客户必须在文本框中写入目标账号,并且他正在转账的金额将写入另一个文本框。在转账金额之前,应验证目标账号和余额金额

客户账户表:

+-----------+--------+--------+---------+--------------+
| 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将被贷记。

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

虽然大多数银行都允许负余额,但我猜你的家庭作业不是这样的——如果他们没有足够的资金来转账,就应该失败。如果这是真的,那么Amount列上的约束可能会很有用。然后,您不需要显式地检查它。如果你想考虑负平衡,那么我可能会编写如下代码:(伪代码。我不会尝试交给你。如果你想学习,你需要自己做一些工作。):

启动交易

更新源帐户以按转账金额递减金额

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

更新目标帐户,以根据正在转移的金额增加金额

提交事务


还包括您认为合适的任何其他错误检查。你如何做到这一点将取决于你的特定数据库。

嗨,这不是一个家庭作业……为了你的理解,我已经给出了一个简单的例子。它可能不应该被标记为家庭作业。你在使用什么关系数据库管理系统?我想我们在两种不同的环境中使用“事务”。OP使用的是银行业意义上的单词。Tom的回答是在数据库意义上使用它。我相信OP所寻求的解决方案是,交易表中的值将用于模拟资金从一个帐户转移到另一个帐户的行为。作为对回答您问题的用户的礼貌,您应该在其他问题上标记答案,这有助于您将问题解决为已接受。