У меня есть таблица с уникальным индексом по двум столбцам, точнее, id_parent и sort_order
+----+-----------+------------+-------------+-------------+-------------+
| id | id_parent | sort_order | some_data | other_data | more_data |
+----+-----------+------------+-------------+-------------+-------------+
| 1 | 1 | 1 | lorem ipsum | lorem ipsum | lorem ipsum |
| 2 | 1 | 2 | lorem ipsum | lorem ipsum | lorem ipsum |
| 3 | 1 | 3 | lorem ipsum | lorem ipsum | lorem ipsum |
+----+-----------+------------+-------------+-------------+-------------+
Теперь я хочу обновить их, их данные и их sort_order за один раз.sort_order изменится с 1 - 2 - 3
на, например, 2 - 3 - 1
.
Но когда я начинаю выполнять операторы обновления, уникальный индекс блокирует меня, как и ожидалось, говоря, что я не могу иметь две строки с id_parent = 1 and sort_order = 2
.Ну, я мог бы сейчас установить 4, обновить другие строки в правильном порядке, а затем установить этот.Но тогда мне нужно будет выполнить дополнительный оператор и, скорее всего, добавить дополнительную логику в мой язык сценариев, чтобы определить правильный порядок обновлений.Я также использую ORM, и это становится еще более неудобным.
Мой вопрос сейчас, есть ли какой-нибудь способ заставить mysql временно игнорировать этот индекс?Как запуск специальной транзакции, в которой индексы будут рассчитываться только перед ее совершением?