Python Portal
Фотография
Одна из самых опасных ошибок в SQL возникает, когда запрос успешно выполняется, хотя должен был завершиться с ошибкой.
Предположим, вы хотите удалить заказы пользователей, чьи аккаунты заблокированы.
Но в таблице banned_accounts есть столбец id, а не user_id.
PostgreSQL не выдаёт ошибку. Вместо этого он незаметно находит user_id во внешней таблице orders и превращает подзапрос в коррелированный.
Если в banned_accounts есть хотя бы одна строка, запрос выберет все заказы, у которых user_id не равен NULL.
Всего одна ошибка в названии столбца, и вы можете удалить всё содержимое таблицы заказов.
👉 @PythonPortal
4 · 572 ·