Solid
Drosera anglica
Unique swap
Сложилась ситуация, когда не знаю как решить поставленную задачу, единственное решение это использование каких-то больших значений integer, но дабы не вносить путаницы, расскажу всё по порядку...
И так, есть таблица, состоящая из следующих полей:
все приведённые поля имеют тип unsigned integer.
Так же поля category_pid и category_order связанны в уникальный индекс, т.е. дублирование pid + order невозможно.
Требуется поменять местами order двух id. Единственное решение это делать транзакцию + использовать временное "большое" число.
SET order = 4294967295 WHERE id = 2
SET order = 2 WHERE id = 5
SET order = 5 WHERE id = 2
Где order в id = 2 изначально был 2.
Прошу комментариев по поводу более гладкого решение сей проблемы.
Сложилась ситуация, когда не знаю как решить поставленную задачу, единственное решение это использование каких-то больших значений integer, но дабы не вносить путаницы, расскажу всё по порядку...
И так, есть таблица, состоящая из следующих полей:
Код:
category_id
category_pid
... (другие поля)
category_order
Так же поля category_pid и category_order связанны в уникальный индекс, т.е. дублирование pid + order невозможно.
Требуется поменять местами order двух id. Единственное решение это делать транзакцию + использовать временное "большое" число.
SET order = 4294967295 WHERE id = 2
SET order = 2 WHERE id = 5
SET order = 5 WHERE id = 2
Где order в id = 2 изначально был 2.
Прошу комментариев по поводу более гладкого решение сей проблемы.