Задавайте вопросы, мы ответим
Вы не зашли.
Т.е. надо без костылей узнать и захватить следующий ID-шник поля autoincrement для последующих массовых операций над вновь вставленной записью.
Вот вариант костыльной реализации:
Неактивен
Предлагаю радикальное решение:
BEGIN
INSERT INTO a ...
SELECT @a := LAST_INSERT_ID();
другие операции, включающие @a
COMMIT;
Неактивен
А принципиально то значение, которое сгенерирует база? Вы же можете при вставке писать то id, которое Вам нужно. Взяли MAX(`id`) и изменили его как надо.
Если возникнет мысль об актуальности, что пока "туда-сюда", добавятся несколько записей, то в Вашем примере та же проблема, хотя в обоих случаях легко решается
Неактивен
paulus написал:
Предлагаю радикальное решение:
А если между моментом когда мы должны "взять ID" до момента реальной вставки проходит какое-то время, и это вообще разные транзакции?
Неактивен
Разные транзакции это быть не должны ©Yoda.
Транзакции нужны именно для того, чтобы одновременно или закоммитить
или откатить. Просто вытаскивать чиселки идеологически не хорошо, т.к.
у Вас будут полупримененные куски, это плохо. Если же Вас устраивают
полупримененные куски — просто вставьте строку в нужное место, возьмите
ее id и используйте его в других транзакциях
Неактивен