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

start [/forum/topic.php?fid=47&msg=38419620&tid=1835925]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 281ms |

| 0 / 0 |
