Загрузка данных


-- Задание 1
DROP PROCEDURE IF EXISTS check_transfer;
DELIMITER //
CREATE PROCEDURE check_transfer()
BEGIN
    DECLARE bal DECIMAL(10,2);
    START TRANSACTION;
    SELECT balance INTO bal FROM accounts WHERE owner = 'Иванов';
    IF bal >= 1500 THEN
        UPDATE accounts SET balance = balance - 1500 WHERE owner = 'Иванов';
        UPDATE accounts SET balance = balance + 1500 WHERE owner = 'Петров';
        COMMIT;
    ELSE
        ROLLBACK;
    END IF;
END //
DELIMITER ;
CALL check_transfer();

-- Задание 2
START TRANSACTION;
UPDATE accounts SET balance = balance - 50 WHERE owner = 'Иванов';
SAVEPOINT sp1;
UPDATE accounts SET balance = balance + 30 WHERE owner = 'Петров';
SAVEPOINT sp2;
UPDATE accounts SET balance = balance - 20 WHERE owner = 'Сидоров';
SAVEPOINT sp3;
UPDATE accounts SET balance = balance + 40 WHERE owner = 'Петров';
ROLLBACK TO SAVEPOINT sp2;
COMMIT;