MySQL: используйте идентификатор строки, вставляемой в сам оператор вставки

Вы могли бы также посмотреть апачское свободное городское население IO , это имеет созданный в последний измененный компаратор и много других хороших утилит для работы с файлами.

7
задан OMG Ponies 28 October 2009 в 23:54
поделиться

5 ответов

Insert запись первая. Затем разделите ваши операторы точкой с запятой и используйте LAST_INSERT_ID () , чтобы получить вновь вставленный идентификатор автоинкремента. Выполнить за один раз.

insert into dir_pictures .... ; 
update dir_pictures set filename=CONCAT(LAST_INSERT_ID(),'-test') where id = LAST_INSERT_ID()
10
ответ дан 6 December 2019 в 19:38
поделиться

Просто выберите текущее значение auto_increment для таблицы из information_schema как часть вашей вставки:

INSERT INTO dir_pictures SET filename=CONCAT((SELECT auto_increment FROM
information_schema.tables WHERE table_name='dir_pictures'), '-test')
3
ответ дан 6 December 2019 в 19:38
поделиться

Ну, вы не узнаете идентификатор строки, пока вставка не завершится ... так что я не думаю, что это когда-либо сработает!

Почему бы просто не вычислить имя файла, когда вы вместо этого извлекаете строку?

INSERT INTO dir_pictures (file_extension) VALUES ('-data')

SELECT picture_id, CONCAT(picture_id, file_extension) as filename
FROM dir_pictures
0
ответ дан 6 December 2019 в 19:38
поделиться

На самом деле это невозможно, вероятно, в ваших интересах было бы просто объединить его на выходе, а не на входе.

SELECT CONCAT (id, '-text' ) как имя файла FROM dir_pictures

0
ответ дан 6 December 2019 в 19:38
поделиться

Если вы действительно хотите сделать это в одном операторе SQL, вы можете попробовать такой прием:

INSERT INTO dir_pictures SET filename = CONCAT ((выберите max (picture_id) +1 из dir_pictures ), '- test');

Остерегайтесь условий гонки, если это многопоточное приложение ...

Кроме того, я сомневаюсь, что оно будет работать с пустой таблицей ...

0
ответ дан 6 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: