Middle
Une entrée enregistrée via un INSERT normal sera-t-elle conservée dans la table des logs si la transaction est annulée?
sobes.tech IA
Réponse de l'IA
Если транзакция откатывается, то все изменения, сделанные внутри этой транзакции, включая INSERT в таблицу логов, также будут отменены и не сохранятся в базе данных.
Это связано с тем, что операции в рамках транзакции являются атомарными: либо все изменения фиксируются (commit), либо все отменяются (rollback).
Если нужно сохранить запись в лог независимо от отката основной транзакции, то обычно используют:
- Внешние механизмы логирования (например, запись в файл или отдельную систему логов).
- Отдельные транзакции для логирования, которые коммитятся независимо.
Пример:
BEGIN TRANSACTION;
INSERT INTO main_table VALUES (...);
-- Логируем в отдельной транзакции
BEGIN TRANSACTION;
INSERT INTO log_table VALUES (...);
COMMIT TRANSACTION;
-- Если основной транзакции сделать ROLLBACK, запись в log_table останется
ROLLBACK TRANSACTION;
Таким образом, обычный INSERT в таблицу логов внутри откатываемой транзакции не сохранится.