MySQL только обновляет строки, если присутствует предложение

Я полагаю, что где-то я читал, что существует параметр конфигурации mysql, который предотвращает обновление строк через консоль, если нет предложения WHERE.

Мне не удалось найти его в документации, существует ли этот вариант?

Ответ 2

Просто SET SQL_SAFE_UPDATES=0; перед запуском вашего запроса.

См. Советы MySQL относительно безопасного режима.

Для новичков полезным вариантом запуска является --safe-updates (или -i-am-a-dummy, который имеет тот же эффект). Это полезно для случаев, когда вы, возможно, выпустили инструкцию DELETE FROM tbl_name, но забыли предложение WHERE. Обычно такой оператор удаляет все строки из таблицы. С помощью -safe-updates вы можете удалять строки только путем указания значений ключей, которые их идентифицируют. Это помогает предотвратить несчастные случаи.

Вам не разрешается выполнять оператор UPDATE или DELETE, если вы не укажете ограничение ключа в предложении WHERE или не предложите предложение LIMIT (или оба). Например:

UPDATE tbl_name SET not_key_column=val WHERE key_column=val;

UPDATE tbl_name SET not_key_column=val LIMIT 1;

Ответ 3

Из документов MySQL: http://dev.mysql.com/doc/refman/5.5/en/mysql-tips.html

"4.5.1.6.2. Использование опции -safe-updates

Для новичков полезным вариантом запуска является --safe-updates (или -i-am-a-dummy, который имеет тот же эффект). Это полезно для случаев, когда вы, возможно, выпустили инструкцию DELETE FROM tbl_name, но забыли предложение WHERE. Обычно такой оператор удаляет все строки из таблицы. С помощью -safe-updates вы можете удалять строки только путем указания значений ключей, которые их идентифицируют. Это помогает предотвратить несчастные случаи.

[...]

Вам не разрешается выполнять оператор UPDATE или DELETE, если вы не укажете ограничение ключа в предложении WHERE или не предложите предложение LIMIT (или оба). "