@bericode

Как изменить данные в нескольких строках SQL запросом?

Здравствуйте.
Есть таблица такого вида:

id  | paren_id | left_key | righ_key | name
1   |  0       | 1        | 2        | категория 1
1   |  1       | 5        | 6        | категория 2
1   |  1       | 3        | 4        | категория 3
1   |  0       | 7        | 8        | категория 4

left_key внешняя сортировка
righ_key внутренняя сортировка
После запроса получаю

категория 1
--категория 3
--категория 2
категория 4

Как построить SQL запрос при изменении позиции категории?
Если "категория3" станет выше "категории 1" то нужно данные в всех столбцах left_key , righ_key изменить на новые.

Идея такая:
Отправляю в функцию id категории и before_id(перед какой должна встать)
Получаю данные left_key , righ_key всех строк. Провожу манипуляции с новыми позициями.

Как теперь изменить их в таблице?
Делать один большой запрос к БД или есть другое решение? Или подскажите в какую строну копать.
Извините если слишком намудрил.
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
Enroller
@Enroller
Немного авантюрист
Я использую транзакции..
Можно написать сколько угодно запросов, объединить их в последовательность и отправить.
Механизм транзакций заблокирует изменения, выполнит все запросы и откатит все изменения если что-то пошло не так.
PDO
Ответ написан
Ваш ответ на вопрос

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

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