Транзакции в 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, чтобы отменить изменения.
Транзакции важны для обеспечения надежности баз данных, особенно в сценариях, где несколько операций должны быть выполнены как единое целое.