
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.10.2013, 17:48:02
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
1. Есть таблица товаров id, name_tov, price; примерно 18 000 наименований товаров. В эту таблицу нужно добавить товары, соблюдая условие: если такой товар есть в таблице, то мы его обновляем, если нет, добавляем как новый. 2. Как товары лучше добавлять по одному или возможно все сразу(если вообще такое возможно)? Важна скорость добавления и минимизация ошибок при этом. Если скорость и качество взаимно исключаемы то лучше вариант «качество». Если можете, укажите, где об этом можно подробно почитать или приведите пример. Заранее всем большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 17:52:38
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
А по какому принципу вы определяете "есть ли товар" ? по названию, коду, идентификатору и т.д. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 18:09:09
|
|||
|---|---|---|---|
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 18:11:16
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
Electric200А по какому принципу вы определяете "есть ли товар" ? по названию, коду, идентификатору и т.д. ? Хороший вопрос! Совсем забыл, что каждый товар имеет уникальный номер который будет играть роль ПК по нему и буду определять есть ли товар. Но я начинающий в MySQL и не знаю как это делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 18:49:56
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
Как выше писали. Код: sql 1. 2. CUSTOMID - это ваш ключ уникальности товара. Если вставляет товар с тем же ключем, то обновляются только цена и название. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 18:50:56
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
И да.. CUSTOMID должен быть UNIQUE INDEX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 19:17:21
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
Electric200И да.. CUSTOMID должен быть UNIQUE INDEX Все понятно но хотел бы уточнить) устанавливая полю CUSTOMID значение UNIQUE INDEX тем самым я делаю его уникальным и когда срабатывает ON DUPLICATE KEY -СУБД знает что этот KEY это CUSTOMID? И не кто не ответил как лучше добавлять товары одним запросом?! а если у меня в массиве 18000 товаров? нормально база примет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 19:32:55
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
Совершенно верно. Сервер знает где у вас ключ в указанных параметрах. Вставлять можно и пачкой Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 21:28:37
|
|||
|---|---|---|---|
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
ISergey.Vхотел бы уточнить) устанавливая полю CUSTOMID значение UNIQUE INDEX тем самым я делаю его уникальным и когда срабатывает ON DUPLICATE KEY -СУБД знает что этот KEY это CUSTOMID? И да, и нет. Но в общем случае - нет. ON DUPLICATE KEY выполняется при нарушении уникальности по ЛЮБОМУ из уникальных индексов таблицы. Если уникален только один индекс (например, первичный ключ) - то и вопросов не возникает, а если есть несколько уникальных индексов, то срабатывание ограничения по любому из них вызывает апдейт. Т.е. СУБД достаточно, что "стрельнуло", а по какому из индексов - это уже неважно. ISergey.VИ не кто не ответил как лучше добавлять товары одним запросом?! а если у меня в массиве 18000 товаров? нормально база примет? Минимальным количеством запросов максимально возможной длины. См. настройки - макс. размер входного пакета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 22:09:52
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
AkinaISergey.Vхотел бы уточнить) устанавливая полю CUSTOMID значение UNIQUE INDEX тем самым я делаю его уникальным и когда срабатывает ON DUPLICATE KEY -СУБД знает что этот KEY это CUSTOMID? И да, и нет. Но в общем случае - нет. ON DUPLICATE KEY выполняется при нарушении уникальности по ЛЮБОМУ из уникальных индексов таблицы. Могу ошибаться, но вроде обновляются только те ключи, которые указаны в наборе INSERT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2013, 22:15:06
|
|||
|---|---|---|---|
|
|||
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
Всем огромное спасибо! Вы мне очень помогли! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.10.2013, 05:19:07
|
|||
|---|---|---|---|
В таблицу нужно добавить товары: если такой товар есть в таблице, то мы его обновляем... |
|||
|
#18+
Electric200Akinaпропущено... И да, и нет. Но в общем случае - нет. ON DUPLICATE KEY выполняется при нарушении уникальности по ЛЮБОМУ из уникальных индексов таблицы. Могу ошибаться, но вроде обновляются только те ключи, которые указаны в наборе INSERTодно другому не противоречит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1835925]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
20ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 279ms |

| 0 / 0 |
