А также вышеупомянутые ответы, Проект Кода является сайтом ASP.NET.
Есть несколько подходов, которые я бы использовал на своем месте:
Во-первых, есть поле CreateDate
со значением по умолчанию CURRENT_TIMESTAMP
метод. По сути, вы выбираете CURRENT_TIMESTAMP
, чтобы получить дату, запускаете вставку, а затем выбираете идентификатор из таблицы, где CreateDate> $ mytimestamp
.
Во-вторых, вы можете создать триггер в таблице зарегистрировать после вставки
и поместить новые идентификаторы в небольшую таблицу аудита. Однако перед проверкой этих идентификаторов обрежьте таблицу. Я бы использовал этот метод, если в вашей таблице миллионы и миллионы строк.
Вызов last_insert_id () дает вам идентификатор ПЕРВОЙ строки, вставленной в последний пакет. Все остальные вставленные гарантированно будут последовательными.
Если вы не делаете что-то очень странное, это позволяет достаточно легко вычислить ID каждой строки.
На самом деле поведение меняется в 5.1 в зависимости от настройки параметра параметр режима автоматического увеличения innodb; это не имеет значения. Пока вы не измените его значение по умолчанию, вы увидите ожидаемое поведение.
Бывают случайные случаи, когда это не делает то, что вы ожидаете, и бесполезно - например, если вы выполняете ON DUPLICATE KEY ОБНОВИТЬ или ВСТАВИТЬ ИГНОРИРОВАТЬ. В этих случаях вам нужно будет сделать что-то еще, чтобы вычислить идентификаторы каждой строки.
Но для простого пакета INSERT без значений, указанных для столбца auto-inc, это просто.
Полное описание того, как автоинкременты обрабатываются в innodb, можно найти здесь