LardaX

14_withdraw_money

Jun 20th, 2017
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 0.58 KB | None | 0 0
  1. DELIMITER $$
  2. CREATE PROCEDURE usp_withdraw_money(account_id INT, money_amount DECIMAL(19,4))
  3. BEGIN
  4.     START TRANSACTION;
  5.     UPDATE `accounts` AS a
  6.     SET a.balance = a.balance - money_amount
  7.     WHERE a.id = account_id;
  8.    
  9.     IF account_id NOT IN (SELECT a.id FROM accounts AS a)
  10.     THEN
  11.         ROLLBACK;
  12.     ELSEIF
  13.         (SELECT a.balance FROM accounts AS a WHERE a.id = account_id) < money_amount
  14.     THEN
  15.         ROLLBACK;
  16.     ELSEIF money_amount < 0
  17.     THEN
  18.         ROLLBACK;
  19.     ELSE
  20.         COMMIT;
  21.     END IF;
  22.    
  23. END $$
  24.  
  25. DELIMITER ;
  26.        
  27. CALL usp_withdraw_money(1, 10);
  28.  
  29. SELECT * FROM accounts AS a WHERE a.id = 1;
Add Comment
Please, Sign In to add comment