Зависающий SQL-запрос

#mysql #sql

#mysql #sql

Вопрос:

Кто-нибудь может указать мне здесь правильное направление? Я обновляю таблицу на работе, и SQL Yog зависает более 30 минут. Я не хотел нажимать CTRL-ALT-DELETE и завершать задачу, потому что я не был уверен, что это каким-то образом испортит производство, если я завершу запрос до его завершения?

Это то, что я запустил:

 USE prodWNG
UPDATE customerItemEntry
SET orderType = 12;
WHERE customerNumber = 546339;
  

[редактировать: хорошо, вы меня поняли, это была шутка, но, честно говоря, я видел, как это происходило. Также, похоже, не имеет значения, сколько опыта у человека. Я видел, как команда руководит производством шлангов, выполняя неверный запрос, подобный приведенному выше, это действительно может поразить кого угодно и где угодно. Итак, спасибо за интересные ответы, но это хорошее напоминание для всех нас быть осторожными!]

Комментарии:

1. ох, что-то здесь не так…

2. Я сочувствую тебе, я тоже иногда все путаю. Если вы не можете выполнить откат, я надеюсь, у вас есть хорошая простая резервная копия. Генерировать запросы на обновление из него или перезагружать было бы достаточно просто. Обновление предполагает, что никаких побочных эффектов обновления OrderType не произошло во время первоначального обновления.

Ответ №1:

Попробуйте это.

 USE prodWNG;
UPDATE customerItemEntry
SET orderType = 12
WHERE customerNumber = 546339;
  

Обратите внимание на расположение точек с запятой. Поскольку вы ставите его перед условием, вы обновили бы OrderType всей таблицы до 12, если бы запрос был успешно выполнен. (надеюсь, вы были в транзакции?)

Завершите запрос, если сможете, в случае успеха вы обновили всю таблицу.

Ответ №2:

да — отключите его, вам все равно нужно будет выполнить откат.

вы обновили все записи до типа 12;