Вы могли бы также посмотреть апачское свободное городское население IO , это имеет созданный в последний измененный компаратор и много других хороших утилит для работы с файлами.
Insert запись первая. Затем разделите ваши операторы точкой с запятой и используйте LAST_INSERT_ID () , чтобы получить вновь вставленный идентификатор автоинкремента. Выполнить за один раз.
insert into dir_pictures .... ; update dir_pictures set filename=CONCAT(LAST_INSERT_ID(),'-test') where id = LAST_INSERT_ID()
Просто выберите текущее значение auto_increment для таблицы из information_schema как часть вашей вставки:
INSERT INTO dir_pictures SET filename=CONCAT((SELECT auto_increment FROM
information_schema.tables WHERE table_name='dir_pictures'), '-test')
Ну, вы не узнаете идентификатор строки, пока вставка не завершится ... так что я не думаю, что это когда-либо сработает!
Почему бы просто не вычислить имя файла, когда вы вместо этого извлекаете строку?
INSERT INTO dir_pictures (file_extension) VALUES ('-data')
SELECT picture_id, CONCAT(picture_id, file_extension) as filename
FROM dir_pictures
На самом деле это невозможно, вероятно, в ваших интересах было бы просто объединить его на выходе, а не на входе.
SELECT CONCAT (id, '-text' ) как имя файла FROM dir_pictures
Если вы действительно хотите сделать это в одном операторе SQL, вы можете попробовать такой прием:
INSERT INTO dir_pictures SET filename = CONCAT ((выберите max (picture_id) +1 из dir_pictures ), '- test');
Остерегайтесь условий гонки, если это многопоточное приложение ...
Кроме того, я сомневаюсь, что оно будет работать с пустой таблицей ...