面试题答案
一键面试BEGIN TRANSACTION;
UPDATE accounts
SET balance = balance - (SELECT amount
FROM transactions
WHERE transaction_id = <specific_transaction_id>)
WHERE account_id = (SELECT from_account_id
FROM transactions
WHERE transaction_id = <specific_transaction_id>);
UPDATE accounts
SET balance = balance + (SELECT amount
FROM transactions
WHERE transaction_id = <specific_transaction_id>)
WHERE account_id = (SELECT to_account_id
FROM transactions
WHERE transaction_id = <specific_transaction_id>);
COMMIT;
将<specific_transaction_id>
替换为实际的交易ID。此代码块开启一个事务,先从转出账户减去交易金额,再向转入账户增加交易金额,最后提交事务以确保并发情况下的数据一致性。