我想做一笔金融交易,但我对 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,并且此代码不是过程的一部分。
谢谢!