繁体   English   中英

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

[英]My sql transaction to transfer 1000 from one account to another account in a single table account(name,balance)

我的SQL交易如何在一个表帐户(名称,余额)中将1000从一个帐户转移到另一个帐户?

我在下面的查询中写了,我不确定如何检查条件。

START TRANSACTION

UPDATE account SET balance = balance - 100 WHERE name = 'D'

UPDATE account SET balance = balance + 100 WHERE name = 'A'

COMMIT

如何在转账前检查条件是否足够?

使用存储过程来定义事务:

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 ;

然后执行存储的过程:

CALL sample_balance_transfer();

注意-可能要添加退出处理程序以获取错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM