Задать вопрос
@Heinemann

Как правильно обновлять таблицу многие ко многим?

Какой подход использовать в обновлении таблицы многие ко многим?
Я в размышлениях столкнулся с ситуацией, что нет необходимости в такой таблице использовать Update
Почему:
Если нам нужно изменить ранее заданные связи, например, у товара есть 2 фильтра, то нам нужно явно передать в where старые id фильтров, иначе получится вот так:
UPDATE products, product_category, product_filter
SET products.name ='Платок',
products.price='3459.00',
products.description='Белый платок',
product_category.category_id='2',
product_filter.filter_id='1',
product_filter.filter_id='2'
WHERE products.id='2' AND product_category.product_id='2' AND product_filter.product_id='2'


Если же нам нужно удалить один из фильтров, а второй обновить, то нам необходимо провести две операции: delete и update, передавая в update id старого фильтра, который мы хотим обновить.

И так мы получаем минимум две ситуации, где sql будет сильно отличатся, плюс потребность передавать id старых записей.

Третий же вариант - мы просто удаляем все записи, а потом вставляем новые.

UPDATE products, product_category
SET products.name ='Платок',
products.price='3459.00',
products.description='Белый платок',
product_category.category_id='2'
WHERE products.id='2' AND product_category.product_id='2';
DELETE * FROM product_filter 
WHERE product_id='2';
INSERT INTO product_filter
(filter_id, product_id) VALUES ('1', '2'), ('2', '2')


У меня пока еще слабые знания в sql, потому хочу узнать "правильный" подход с точки зрения семантики и реализации.
  • Вопрос задан
  • 170 просмотров
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы