Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
CREATE TABLE accounts ( id INT PRIMARY KEY, balance NUMERIC ); CREATE OR REPLACE PROCEDURE transfer_funds( from_account INT, to_account INT, amount NUMERIC ) LANGUAGE plpgsql AS $$ BEGIN -- Начинаем внутреннюю транзакцию BEGIN -- Снимаем средства UPDATE accounts SET balance = balance - amount WHERE id = from_account; -- Проверим, достаточно ли средств IF NOT FOUND THEN RAISE EXCEPTION 'Source account not found'; END IF; -- Переводим средства UPDATE accounts SET balance = balance + amount WHERE id = to_account; IF NOT FOUND THEN RAISE EXCEPTION 'Destination account not found'; END IF; -- Завершаем внутреннюю транзакцию COMMIT; EXCEPTION WHEN OTHERS THEN -- Откат в случае любой ошибки ROLLBACK; RAISE; END; END; $$; CALL transfer_funds(1, 2, 100.00);

Stuck with a problem? Got Error? Ask AI support!

Copy Clear