Вам нужно два запроса. Предполагая, что вы знаете позицию, которую вы вставляете, увеличьте позицию каждой строки, позиция которой больше или равна позиции, которую вы вставляете:
UPDATE table SET position = position + 1 WHERE position >= newPosition
После этого можно вставить newPosition
, и дубликатов не будет:
INSERT INTO table SET position = newPosition
Чтобы получить наибольшее значение, вы можете использовать MAX()
SELECT MAX(position) FROM table