tablename = zones
ID sort_order area_name
======== ========= =========
1 1 aaaa
3 2 bbbb
5 3 cccc
7 4 dddd
8 5 eeeee
мне нужно добавить новое имя области
например: ffff вместо sort_order = 3.
и переустановите оставшиеся области sort_orders соответственно, как показано ниже
ID sort_order area_name
======== ========= =========
1 1 aaaa
3 2 bbbb
9 3 ffff
5 4 cccc
7 5 dddd
8 6 eeeee
нужен sql-запрос для этого
Используйте UPDATE
и INSERT
. Я предполагаю, что ID
автогенерируется. UPDATE
предоставляет место для новой записи в последовательности sort_order
, а затем вы можете легко вставить ее.
UPDATE zones
SET sort_order = sort_order + 1
WHERE sort_order >= 3
INSERT INTO zones(sort_order , area_name)
VALUES (3, 'ffff')
Однако, если таблица zones
сильно вставлена, вы испытаете много блокировки ожидания.
Вам нужно 2 запроса для этого. Прежде всего, вы обновляете sort_orders
существующих записей и вставляете новую запись:
UPDATE zones SET sort_order=sort_order + 1 WHERE sort_order >= 3;
INSERT INTO zones VALUES (NULL, 3, 'ffff')