Если я уничтожу запрос на удаление в MySQL, все ли строки будут сохранены? - PullRequest
5 голосов
/ 01 декабря 2010

Предположим, я на полпути к выполнению импорта, а не к запуску

SELECT COUNT(*) FROM table_being_imported

Я нажимаю Ctrl + R , набираю table_being_im и нажимаю клавишу возврата, только чтобы найти, к моему ужасу, что я только что выпустил

DELETE FROM table_being_imported

К сожалению. Поэтому я нажимаю ctrl + C и получаю сообщение:

Ctrl-C -- sending "KILL QUERY 627" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted

Он бы удалил какую-либо из строк? Просто гипотетически, конечно ...

1 Ответ

9 голосов
/ 01 декабря 2010

гипотетически, ... некоторые из этих строк теперь пропали.

Во время операций UPDATE или DELETE флаг уничтожения проверяется после каждого чтения блока и после каждого обновленияили удаленная строка.Если флаг уничтожения установлен, оператор отменяется.Обратите внимание, что если вы не используете транзакции, изменения не будут отменены.

Не время упоминать об этом, но именно поэтому транзакционные запросы лучше всего подходят для работы с критически важными для бизнеса данными..

...