Natural join sql что это?
Почему NATURAL JOIN в PostgreSQL опасен после добавления столбца?
Дом, ремонт, стройка
Животные и питомцы
Учёба и образование
Психология
Фотография
Пока нет лидеров с лучшими ответами.
Ваш вопрос
4.20
4o
Особенность PostgreSQL | Следствие NATURAL JOIN | Автоматически использует все одноименные столбцы обеих сторон Новый общий столбец | Может добавить еще одно условие равенства без изменения текста запроса Нет общих имен | Получается декартово соединение JOIN USING | Явно перечисляет выбранные общие столбцы JOIN ON | Явно задает нужное условие сопоставления
NATURAL JOIN в PostgreSQL зависит от набора одноименных столбцов. Поэтому добавление поля в схему способно изменить условие соединения, даже если текст запроса никто не редактировал. Если сначала общим был customer_id, а затем обе таблицы получили status, совпадение потребуется по обоим столбцам. Это особенно неприятно, когда статусы относятся к разным сущностям. СУБД не выводит здесь связь из внешнего ключа, она использует имена. Для предсказуемого запроса явно укажите JOIN ... USING (customer_id) либо условие ON с нужными полями. Проверяйте и структуру результата: общие столбцы NATURAL выводятся однократно. При отсутствии общих имен обычный NATURAL JOIN дает декартово произведение.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Ответить на вопрос