@Artem0071
Безработный mr. Junior

Как сделать инкримент при уникальности двух полей?

Есть таблица categories(shop_id, index, title)
И есть индекс на shop_id и index чтобы они не повторялись (чтобы у магазина не было одинаковых индексов)

Так вот, пробую такой запрос:
update `categories` set `index` = `index` + 1 where `shop_id` = '23eb94c0-1a19-11e8-acea-ade469f32ac7'


То есть просто хочу увеличить индекс на 1 у всех категорию конкретного магазина
Но БД выдает следующее:
#1062 - Дублирующаяся запись '1-23eb94c0-1a19-11e8-acea-ade469f32ac7' по ключу 'categories_index_shop_id_unique'


То есть он говорит что получаются не уникальные связки полей

НО при этом если делать не инкремент, а наоборот отнимать единицу, то все работает:
update `categories` set `index` = `index` - 1 where `shop_id` = '23eb94c0-1a19-11e8-acea-ade469f32ac7'


Как это можно починить?
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Попробуйте обновлять по значению столбца в обратном порядке: ORDER BY index DESC.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы