我的sql事务将1000从一个帐户转移到单个表帐户中的另一个帐户(名称,余额)

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)

注意 - 可能需要为错误添加退出处理程序