ron*_*ron 0 mysql transactions
我的 SQL 事务将 1000 从一个帐户转移到单个表帐户中的另一个帐户(名称,余额)?
我写了下面的查询,我不知道如何检查条件。
START TRANSACTION
UPDATE account SET balance = balance - 100 WHERE name = 'D'
UPDATE account SET balance = balance + 100 WHERE name = 'A'
COMMIT
Run Code Online (Sandbox Code Playgroud)
如何在转账前检查足够金额的条件?
小智 6
使用存储过程来定义事务:
DELIMITER $$
DROP PROCEDURE IF EXISTS sample_balance_transfer $$
CREATE PROCEDURE sample_balance_transfer ()
BEGIN
DECLARE balance_var INT DEFAULT 0;
SELECT IFNULL(balance,0)
INTO balance_var
FROM account
WHERE name = 'D';
IF balance_var >= 1000 THEN
START TRANSACTION;
UPDATE account
SET balance = balance - 1000
WHERE name = 'D';
UPDATE account
SET balance = balance + 1000
WHERE name = 'A';
COMMIT;
END IF;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
然后执行存储过程:
CALL sample_balance_transfer();
Run Code Online (Sandbox Code Playgroud)
注意 - 可能需要为错误添加退出处理程序
| 归档时间: |
|
| 查看次数: |
5010 次 |
| 最近记录: |