powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
12 сообщений из 12, страница 1 из 1
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419290
ISergey.V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Есть таблица товаров id, name_tov, price; примерно 18 000 наименований товаров. В эту таблицу нужно добавить товары, соблюдая условие: если такой товар есть в таблице, то мы его обновляем, если нет, добавляем как новый.
2. Как товары лучше добавлять по одному или возможно все сразу(если вообще такое возможно)? Важна скорость добавления и минимизация ошибок при этом. Если скорость и качество взаимно исключаемы то лучше вариант «качество».
Если можете, укажите, где об этом можно подробно почитать или приведите пример. Заранее всем большое спасибо!
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419296
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по какому принципу вы определяете "есть ли товар" ? по названию, коду, идентификатору и т.д. ?
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419318
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419319
ISergey.V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Electric200А по какому принципу вы определяете "есть ли товар" ? по названию, коду, идентификатору и т.д. ?
Хороший вопрос! Совсем забыл, что каждый товар имеет уникальный номер который будет играть роль ПК по нему и буду определять есть ли товар. Но я начинающий в MySQL и не знаю как это делать
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419356
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как выше писали.
Код: sql
1.
2.
INSERT product (NAME,PRICE,CUSTOMID) VALUES ('Товар2',120,28) 
ON DUPLICATE KEY UPDATE NAME='Товар2', PRICE=120;


CUSTOMID - это ваш ключ уникальности товара. Если вставляет товар с тем же ключем, то обновляются только цена и название.
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419358
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да.. CUSTOMID должен быть UNIQUE INDEX
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419376
ISergey.V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Electric200И да.. CUSTOMID должен быть UNIQUE INDEX
Все понятно но хотел бы уточнить) устанавливая полю CUSTOMID значение UNIQUE INDEX тем самым я делаю его уникальным и когда срабатывает ON DUPLICATE KEY -СУБД знает что этот KEY это CUSTOMID?
И не кто не ответил как лучше добавлять товары одним запросом?! а если у меня в массиве 18000 товаров? нормально база примет?
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419394
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно верно. Сервер знает где у вас ключ в указанных параметрах.
Вставлять можно и пачкой
Код: sql
1.
2.
3.
4.
5.
6.
INSERT product (NAME,PRICE,CUSTOMID) VALUES
('Товар5',10,28),
('Товар5',1120,27),
('Товар5',1120,22),
('Товар5',1120,20)
ON DUPLICATE KEY UPDATE NAME=VALUES(NAME), PRICE=VALUES(PRICE);
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419479
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ISergey.Vхотел бы уточнить) устанавливая полю CUSTOMID значение UNIQUE INDEX тем самым я делаю его уникальным и когда срабатывает ON DUPLICATE KEY -СУБД знает что этот KEY это CUSTOMID?
И да, и нет. Но в общем случае - нет.

ON DUPLICATE KEY выполняется при нарушении уникальности по ЛЮБОМУ из уникальных индексов таблицы. Если уникален только один индекс (например, первичный ключ) - то и вопросов не возникает, а если есть несколько уникальных индексов, то срабатывание ограничения по любому из них вызывает апдейт. Т.е. СУБД достаточно, что "стрельнуло", а по какому из индексов - это уже неважно.

ISergey.VИ не кто не ответил как лучше добавлять товары одним запросом?! а если у меня в массиве 18000 товаров? нормально база примет?
Минимальным количеством запросов максимально возможной длины. См. настройки - макс. размер входного пакета.
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419499
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaISergey.Vхотел бы уточнить) устанавливая полю CUSTOMID значение UNIQUE INDEX тем самым я делаю его уникальным и когда срабатывает ON DUPLICATE KEY -СУБД знает что этот KEY это CUSTOMID?
И да, и нет. Но в общем случае - нет.

ON DUPLICATE KEY выполняется при нарушении уникальности по ЛЮБОМУ из уникальных индексов таблицы.
Могу ошибаться, но вроде обновляются только те ключи, которые указаны в наборе INSERT
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419501
ISergey.V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо! Вы мне очень помогли!
...
Рейтинг: 0 / 0
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
    #38419620
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Electric200Akinaпропущено...

И да, и нет. Но в общем случае - нет.

ON DUPLICATE KEY выполняется при нарушении уникальности по ЛЮБОМУ из уникальных индексов таблицы.
Могу ошибаться, но вроде обновляются только те ключи, которые указаны в наборе INSERTодно другому не противоречит...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]