Vous devrez le scinder en 2 opérations.
START TRANSACTION;
UPDATE table1 SET id = id + 1 WHERE id >= 3 order by id DESC;
INSERT INTO table1 (id, value) VALUES (3, 300);
COMMIT;
Notez que vous avez besoin du order by
dans l'instruction de mise à jour, il commencera donc par les identifiants les plus élevés en premier.
Une autre idée serait de déclarer id
comme decimal(10,1)
et insérez la valeur 2.5
comme identifiant entre 2 et 3.