У меня есть таблица ссылок BoxPeg, которая связывает серию Pegs с 1 Box.Reflow INT UNSIGNED Series
Уловка заключается в том, что колышки упорядочены и рассматриваются как массив в клиентском программном обеспечении.
Итак, у нас есть столбец INT UNSIGNED, называемый «position» в таблице BoxPeg.
Каждый раз, когда кто-то добавляет Peg к коробке, мы делаем это:
UPDATE BoxPeg SET position = position+1 WHERE box = '{BOXID}' AND position >= {NEWPEGPOSITION};
INSERT INTO BoxPeg(box, peg, position) VALUES('{BOXID}', '{PEGID}', {NEWPEGPOSITION});
Это прекрасно работает, пока клиент каким-то образом не переходит в новое положение колышек, что это слишком большой:
before:
0
1
2
3
after insert 9
0
1
2
3
9
I знайте, что я могу получить MAX (позицию) WHERE box = '{BOXID}' в отдельном SQL-заявлении перед этими двумя строками и внести корректировку в новую позицию привязки на основе этого, но я бы хотел просто перепланировать всю серию в один снимок ПОСЛЕ Вставки. Таким образом, я на 100% уверен, что в каждой серии нет пробелов от начала до конца.
Как выглядит это ОБНОВЛЕНИЕ?
Рассмотрим такую ситуацию:
before:
0
2
5
8
after insert 5
0
2
5
6
9
after reflow
0
1
2
3
4
Является ли столбец 'position' частью уникального ограничения? –
no, postion не указан с помощью уникального ограничения. –