@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, потому хочу узнать "правильный" подход с точки зрения семантики и реализации.
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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