parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Maxx 25.02.2008 20:35 / 25.02.2008 20:39

Под уникальным ключом имеется ввиду что то, что является однозначным ключом товара и в БД и в импортируемых данных.
Естественно, что id, генерируемый самой БД таковым не является.

Вообще говоря без такого ключа вы и UPDATE сделать не можете, вы же как то указываете БД какой именно товар вы хотите обновить? это может быть артикул, это может быть UID товара взятый из программы источника (например 1С), это может быть название товара, или, если например артикул уникален в пределах группы то это код группы+код товара. Короче это то, что вы указываете в WHERE когда делаете update. Вот на это что-то. поле или группу полей, вам надо назначить уникальный индекс (возможно составной). После этого предлагаемый INSERT будет работать как надо.

Кстати ничего не мешает сначала вгрузить (LOAD DATA...)новый прайс во временную таблицу items_temp, как предлагает Миша, затем воспользоваться запросом вида
INSERT INTO items SELECT items_temp ON DUPLICATE KEY UPDATE ...
Это даже быстрей наверно будет и это всего два запроса.