Du bliver nødt til at opdele det i 2 operationer.
START TRANSACTION;
UPDATE table1 SET id = id + 1 WHERE id >= 3 order by id DESC;
INSERT INTO table1 (id, value) VALUES (3, 300);
COMMIT;
Bemærk, at du skal bruge order by
i opdateringserklæringen, så den starter med de højeste id'er først.
En anden idé ville være at erklære id
som decimal(10,1)
og indsæt værdien 2.5
som id mellem 2 og 3.