金融取引をしたいのですが、MySQL の取引機能に詳しくありません。
私は自分がすべてのことを正しく行っていることを確認したい. 私の目標は、トランザクション中に transactionHistory と transactionQueued テーブルを「ロック」して、アカウントの残高が正しく、他のトランザクションを挿入して残高を操作できないようにすることです。
SET autocommit=0;
START TRANSACTION;
IF (
SELECT SUM(amount) of transactionHistory WHERE account = 1
+
SELECT SUM(amount) of transactionsQueued WHERE account = 1)
>= :amount)
INSERT INTO transactionHistory (account, amount) VALUES (1, -:amount);
INSERT INTO transactionHistory (account, amount) VALUES (2, :amount);
COMMIT;
mySQL が影響を受けるすべてのテーブルをロックするのは正しいですか? この場合、transactionHistory と transactionsQueued.
私は innoDB を使用していますが、このコードは手順の一部ではありません。
ありがとうございました!