Кодирование таблицы транзакций - PullRequest
0 голосов
/ 30 марта 2009

Мне нужна помощь в том, как перенести данные из одной учетной записи no в другую учетную запись no в одной таблице. При этом клиент получит номер своего аккаунта из выпадающего списка (он придет автоматически через сеанс), и клиент должен будет указать номер счета назначения в текстовом поле, а сумма, которую он переводит, будет записана в другом текстовом поле. номер счета и сумма баланса должна быть подтверждена.

Customer_Account table:

+-----------+--------+--------+---------+--------------+
| 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 Ответ

1 голос
/ 30 марта 2009

Проверьте ваши учебники на предмет «транзакций» и посмотрите, как явно начать транзакцию. Если вы знаете, как обернуть серию операторов в транзакцию, вам нужно просто выполнить все необходимые проверки и откатиться, если возникнет проблема.

Хотя большинство банков допускают отрицательные сальдо, я собираюсь догадаться, что для вашей домашней работы это не так - если у них недостаточно средств для ее перевода, она может потерпеть неудачу. Если это правда, тогда ограничение на столбец Amount может быть полезным. Тогда вам не нужно явно проверять это. Если вы хотите учесть отрицательные сальдо, то я, вероятно, написал бы что-то вроде этого: (псевдокод. Я бы не пытался передать это. Вам нужно будет поработать самостоятельно, если вы хотите учиться.):

Начать транзакцию

Обновить исходный аккаунт, чтобы уменьшить сумму на сумму перевода

Проверьте, не превышает ли сумма на исходном счете значение 0. Если это так, откат транзакции

Обновить целевой счет, чтобы увеличить сумму на сумму перевода

Совершить транзакцию

Также включите любую другую проверку ошибок, которую вы считаете подходящей. То, как вы это сделаете, будет зависеть от вашей конкретной базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...