Sobes.tech
Middle

Verrà conservata nella tabella dei log una registrazione effettuata tramite un normale INSERT se la transazione viene annullata?

sobes.tech AI

Risposta dell'AI

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