В части 1 я уже описывал как делать 1 запрос вместо двух используя уникальный ключ, но что делать, когда такой ключ невозможен? Решение – это составной уникальный ключ из полей таблицы.
Например есть некая таблица, где хранятся значения дополнительных параметров для товара, в таблице tFieldValue есть поля:
valueId
value
fieldId – ключ, указывающий значение какого параметра храним
goodId – ключ, указывающий на товар.
Далее при сохранении карточки товара например у нас должны сохраняться и дополнительные параметры, т е надо сначало таблице tFieldValue проверить есть ли там значение для поля fieldId у товара goodId, если есть, то обновить поле value, если нет то добавить новую запись.
Чтобы решить эту задачу в 1 запрос в таблице tFieldValue из полей fieldId и goodId делаем 1 составной уникальный ключ, в phpmyadmin в структуре таблице выделяем эти два поля галочкой и нажимаем кнопку с уникальным ключом, либо запросом:
ALTER TABLE ` tFieldValue` ADD UNIQUE ( `fieldId` , `goodId` );
Далее работаем с этой таблице как описано в части 1:
INSERT INTO `tFieldValue` (value,fieldId,goodId ) VALUES (‘8′, 120,1) ON DUPLICATE KEY UPDATE value=’8′
Mysql будет искать запись в таблице tFieldValue с полем fieldId = 120 ,goodId=1, если найдет, то обновит value, если не найдет, тогда добавит новую запись.