Вам придется разделить его на 2 операции.
START TRANSACTION;
UPDATE table1 SET id = id + 1 WHERE id >= 3 order by id DESC;
INSERT INTO table1 (id, value) VALUES (3, 300);
COMMIT;
Обратите внимание, что вам нужно order by
в операторе обновления, чтобы он сначала начинался с самых высоких идентификаторов.
Другой идеей было бы объявить id
как decimal(10,1)
и вставить значение 2.5
в качестве идентификатора между 2 и 3.