Добавить в корзинуПозвонить
Найти в Дзене
Y_LAB University

Новый пост Y_LAB Actual | Код под микроскопом

🔍 Продолжаем рубрику, в которой разбираем небольшие фрагменты кода и ищем в них скрытые ошибки, неочевидное поведение и моменты, которые могут привести к неожиданным результатам. 🗄 Сегодня пример не на языке программирования, а на SQL. И это тот случай, когда одна маленькая деталь может повлиять сразу на все данные в таблице: sql UPDATE users SET is_active = false; Вопрос: Что сделает этот запрос? На первый взгляд кажется, что всё просто: обновит значение поля is_active. Но есть важный нюанс: запрос изменит каждую строку в таблице users. 📌 Итог: • Все пользователи станут неактивными; • Данные изменятся сразу для всей таблицы; • Откатить последствия без резервной копии может быть непросто. ❓ Почему так происходит В запросе отсутствует ключевое условие: sql WHERE ... Без WHERE команда UPDATE применяется ко всем записям, которые находятся в таблице. То есть этот код: sql UPDATE users SET is_active = false; по сути означает: > «Сделать is_active = false для каждого пользо

Новый пост Y_LAB Actual | Код под микроскопом 🔍

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

🗄 Сегодня пример не на языке программирования, а на SQL. И это тот случай, когда одна маленькая деталь может повлиять сразу на все данные в таблице:

sql UPDATE users SET is_active = false;

Вопрос:

Что сделает этот запрос?

На первый взгляд кажется, что всё просто: обновит значение поля is_active.

Но есть важный нюанс: запрос изменит каждую строку в таблице users.

📌 Итог:

• Все пользователи станут неактивными;

• Данные изменятся сразу для всей таблицы;

• Откатить последствия без резервной копии может быть непросто.

❓ Почему так происходит

В запросе отсутствует ключевое условие:

sql WHERE ...

Без WHERE команда UPDATE применяется ко всем записям, которые находятся в таблице.

То есть этот код:

sql UPDATE users SET is_active = false;

по сути означает:

> «Сделать is_active = false для каждого пользователя».

💡 Как должно быть?

Если нужно обновить конкретную запись, необходимо явно указать условие:

sql UPDATE users SET is_active = false WHERE id = 42;

Теперь изменится только один пользователь.

🛠 Как защититься от таких ошибок?

Полезная привычка перед UPDATE и DELETE сначала запускать:

sql SELECT * FROM users WHERE id = 42;

Так можно заранее проверить, какие строки попадут под изменение.

🎯🎯🎯

Подобная ошибка кажется слишком очевидной… пока не случается в реальной базе.

Иногда один пропущенный WHERE — это не просто баг, а очень долгий вечер восстановления данных.

Случалось когда-нибудь запускать запрос и сразу тянуться к backup? 👀

#Y_LAB_University #Y_LAB_Actual