Каков наилучший способ получить последний вставленный идентификатор из определенной таблицы? Я вижу, по крайней мере, четыре различных подхода:Реализация last_insert_id
1. SELECT LAST_INSERT_ID()
2. mysql_insert_id()
3. SELECT max(id) FROM table
4. SELECT id FROM table ORDER BY id DESC LIMIT 1
Первый подход бьет второй, потому что второй один возвращает 0, если идентификатор имеет тип bigint
. Но проблема в том, что я не могу быть уверен, что id
, который я получаю, - из таблицы, которую я хочу, потому что LAST_INSERT_ID()
возвращает последние id
по всей базе данных. Третий и четвертый подходы не так быстр на больших таблицах, но четвертый подход, по-видимому, превзошел третий по скорости. Я хочу знать, как вы, ребята, реализуете эту задачу в реальных проектах.
'потому что LAST_INSERT_ID() возвращает последний id по всей базе данных', но за соединение. – VolkerK
Никогда не используйте # 3 или # 4, потому что они не будут обрабатывать ситуацию с одновременными пользователями .... Проекты в реальном мире никогда не должны использовать эти методы, если они не хотят быть запущенными с ошибками проектами реального мира с поврежденными данными –
3 + 4 являются крайне ненадежными и опасными. # 2 просто вызывает # 1 в любом случае. Итак ... # 1 или # 2, никогда # 3 или # 4 –