Транзакции в SQL

НАВИГАЦИЯ ПО СТРАНИЦЕ

Начало транзакции Завершение транзакции Отмена транзакции Пример использования Управление транзакциями

Транзакция в базах данных представляет собой логическую единицу работы, которая состоит из одного или нескольких SQL-запросов. Транзакции обеспечивают атомарность, целостность, изолированность и долговечность (ACID-свойства). Вот как использовать транзакции в SQL:

Начало транзакции:

START TRANSACTION;

Завершение транзакции с фиксацией изменений:

COMMIT;

Отмена транзакции и откат изменений:

ROLLBACK;

Пример использования транзакции:

-- Начало транзакции
START TRANSACTION;

-- Внесение изменений
UPDATE Account SET Balance = Balance - 100 WHERE AccountID = 1;
INSERT INTO TransactionLog (AccountID, Amount) VALUES (1, -100);

-- Завершение транзакции с фиксацией изменений
COMMIT;

В приведенном выше примере выполняется транзакция, которая вычитает 100 из баланса счета и добавляет соответствующую запись в журнал транзакций. Если все операции выполняются успешно, изменения фиксируются с помощью COMMIT. Если возникает ошибка или нужно отменить изменения, можно выполнить ROLLBACK.

Управление транзакциями в рамках хранимых процедур:

CREATE PROCEDURE MakeTransfer(
    IN fromAccount INT,
    IN toAccount INT,
    IN amount DECIMAL(10,2)
)
BEGIN
    -- Начало транзакции
    START TRANSACTION;

    -- Внесение изменений
    UPDATE Account SET Balance = Balance - amount WHERE AccountID = fromAccount;
    UPDATE Account SET Balance = Balance + amount WHERE AccountID = toAccount;

    -- Завершение транзакции с фиксацией изменений
    COMMIT;
END;

Это пример хранимой процедуры для выполнения перевода средств между двумя счетами. Транзакция начинается с START TRANSACTION, и если все изменения прошли успешно, они фиксируются с COMMIT. Если возникает ошибка, можно выполнить ROLLBACK, чтобы отменить изменения.

Транзакции важны для обеспечения надежности баз данных, особенно в сценариях, где несколько операций должны быть выполнены как единое целое.