
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.06.2016, 12:36
|
|||
|---|---|---|---|
|
|||
Duplicate entry при Update |
|||
|
#18+
Не нашел подобного обсуждения. Пример несколько сферичен, на практике чуть сложнее таблица. Входные данные: Создаем таблицу с уник. индексом. Код: sql 1. 2. 3. Добавляем данных Код: sql 1. Теперь немного к практич. применению. Предположим, таблица с упорядоченными телефонами или товарам, где id - уник. индекс, num- порядковый номер. text - телефон, название. Вот хочу сдвинуть везде порядковый номер на 1, и первым вставить новую позицию. Делаю запрос: Код: sql 1. И получаю ошибку Duplicate entry '2' for key 'num' Пока нашел два решения: 1) сделать update ignore. На практике показало, что не работает, обновляет только последнюю запись, остальные так и остаются 2) делать update по одной записи. Слишком накладно мне кажется при 1000 записей делать 1000 запросов. А записей, если мы говорим о списке товаров может быть и больше. Убирать unique индекс тоже не хотелось бы, т.к. пытаюсь с таблицей работает много каких скриптов, и хотелось бы защититься от некорректных данных. Ни то, ни другое меня не устраивает. Есть у кого-нибудь хороший способ для решения для такой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.06.2016, 12:45
|
|||
|---|---|---|---|
Duplicate entry при Update |
|||
|
#18+
http://dev.mysql.com/doc/refman/5.7/en/update.html If the ORDER BY clause is specified, the rows are updated in the order that is specified. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1831703]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
20ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 407ms |

| 0 / 0 |
