N_Damyanov

14. Money Transfer

Jun 8th, 2019
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 0.73 KB | None | 0 0
  1. CREATE PROCEDURE usp_transfer_money(from_account_id INT, to_account_id INT, amount DECIMAL(19,4))
  2.  
  3. BEGIN
  4. START TRANSACTION;
  5.  
  6.         IF NOT EXISTS (SELECT a.id FROM accounts a WHERE a.id = from_account_id) THEN ROLLBACK;
  7.         ELSEIF NOT EXISTS (SELECT a.id FROM accounts a WHERE a.id = to_account_id) THEN ROLLBACK;
  8.         ELSEIF amount < 0 THEN ROLLBACK;
  9.         ELSEIF from_account_id = to_account_id THEN ROLLBACK;
  10.         ELSEIF (SELECT a.id FROM accounts a WHERE a.id = from_account_id AND a.balance - amount < 0) THEN ROLLBACK;
  11.         ELSE
  12.             UPDATE accounts SET balance = balance - amount WHERE id = from_account_id;
  13.             UPDATE accounts SET balance = balance + amount WHERE id = to_account_id;
  14.         END IF;
  15.         COMMIT;
  16.        
  17. END;
Add Comment
Please, Sign In to add comment