Поиск и замена в таблице MySQL, есть оптимальное решение?

Есть таблица переводов, где есть поля:
INSERT INTO `translate` (`translate_id`, `title_ru`, `title_en`, `type`, `cat_id`) 
VALUES
(1,   'абц 0001',   'abc 0001',   1,   10),
(2,   'абц 0001',   'abc 0002',   1,   10),
(3,   'деф 0001',   'def 0001',   2,   20),
(4,   'деф 0002',   'def 0002',   2,   20),
(5,   'деф 0001',   'def 0001',   3,   30),
(6,   'деф 0001',   'def 0002',   3,   30);

Индексы:
PRIMARY	translate_id
UNIQUE	title_en, type, cat_id

title_en - всегда уникальное значение, но с привязкой к категории (cat_id) и типу (type). Т.е. если убрать зависимость этих двух параметров - начнут появляться дубли.

Теперь проблема на примере translate_id 3,4,5,6. Я делаю замену по полю title_en с 'def 0001' на 'def 0002' и в конечном итоге получаю дубли и соответственно ошибку.

Как лучше всего реализовать механизм объединения дублей? Например, после поиска и замены получить:
INSERT INTO `translate` (`translate_id`, `title_ru`, `title_en`, `type`, `cat_id`) 
VALUES
(1,   'абц 0001',   'abc 0001',   1,   10),
(2,   'абц 0001',   'abc 0002',   1,   10),
(3,   'деф 0001',   'def 0002',   2,   20),
/*(4,   'деф 0002',   'def 0002',   2,   20), дублирующаяся запись была удалена*/
(5,   'деф 0001',   'def 0002',   3,   30);
/*(6,   'деф 0001',   'def 0002',   3,   30); дублирующаяся запись была удалена*/


Заранее спасибо за ответы!
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы