Вы не можете сделать это с помощью одного оператора SQL в MySQL. Если MySQL поддерживает последовательности Oracle-стиля, вы сможете сделать это в одном заявлении. Но поскольку auto_increment не даст вам следующий идентификатор до после, вставка была выполнена, вам нужно иметь строку, вставленную перед доступом к идентификатору. Ближайший вы можете получить в MySQL заключается в следующем:
insert into imgae (image) values (null);
update imgae set image=concat(last_insert_id(), '.jpg') where id=last_insert_id();
BTW: Я вижу, ваша таблица называется imgae
, который, вероятно, опечатка. Возможно, вы указали номер image
? Кроме того, когда я попытался запустить ваш оператор create table
, он потерпел неудачу. Я должен был сделать пару изменений, чтобы заставить его работать, чтобы я мог проверить свой ответ. Он должен выглядеть следующим образом:
create table imgae(id int auto_increment primary key, image text);
Да, это опечатка. Спасибо за ваш ответ. Фактически, я использую Symfony sfWidgetFormInputFileEditable, который, похоже, должен определить имя изображения перед запуском sql-вставки. Трудно иметь имя изображения с значением автоинкремента Pk. – xdazzyy
@xdazzyy: Я понимаю, что удобно иметь pk в имени файла, и это, безусловно, возможно. Но IMO, это не стоит дополнительной сложности, которую вам придется добавить, чтобы заставить ее работать. Несомненно, это приятное, а не жесткое требование. Это? – Asaph
Спасибо, Асаф. Но, к несчастью, это жесткое требование ... – xdazzyy