Каждый SQL отменяется, когда он никогда не достигает точки COMMIT? - PullRequest
0 голосов
/ 22 ноября 2018

Я думаю, что я правильно понял принцип, я просто хочу убедиться, что я правильно понял.

Таким образом, когда автокоммит включен, это означает, что все команды, которые я выполняю, не будут выполняться напрямую, кроме тех, которые сами инициируют фиксацию.,Поэтому, когда я, например, запускаю базовый макрос, например:

statement.executeUpdate("SET autocommit = 0;")

//some code
//SQL Queries
//SQL DELETEs
//SQL INSERTs

statement.executeUpdate("COMMIT;")

, то что произойдет: если сценарий выполняется без проблем, сценарий переходит к точке выполнения каждого оператора SQL иCOMMITed в конце, если нет, и возникает ошибка или исключение, разрывы сценария в этой точке никогда не превращаются в точку, где произойдет COMMIT, и каждое изменение до этой точки отменяется, так что каждая удаленная информация все еще будет там.и каждая вставка выбрасывается.

Это так просто, или я что-то не так понял?

1 Ответ

0 голосов
/ 28 декабря 2018

Предполагая, что вы используете достойную базу данных, данные текущей транзакции обычно хранятся не в самой куче таблицы, а в «журнале повторов».

То есть даже в таблице неткоммит выполнен.Коммит и другие обработанные позже помещают их в основную таблицу в какой-то момент.

В общем случае, если ядро ​​базы данных дает сбой, данные все равно могут быть где-то на диске, но не в какой-либо «официальной» области таблицы,поэтому он будет отброшен при перезапуске ядра базы данных.Это не изменило фактические данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...