Добрый день. Нужен совет. В базу данных в течении одной минуты вставляется до 10-и записей. Каким образом можно определить уникальный id (с первичным ключом и auto_increment-ом) конкретной записи на момент, когда она вставляется в базу? Все записи представляют собой данные о пользователе, которые могут повторяться. Т.е. кроме поля id уникальных полей больше нету. Спасибо.
Ок. А если в одно и тоже время добавляются две или несколько записей - есть вероятность того, что эта функция подтянет не свою строку?
А я хз. Знаю только, что возвращает ID ПОСЛЕДНЕЙ вставленной записи. Если так, например: [sql]INSERT INTO `table` VALUES (null, "Abc"); SELECT LAST_INSERT_ID();[/sql] То будет правильно, а если так: [sql]INSERT INTO `table` VALUES (null, "Abc"), (null, "Def"); SELECT LAST_INSERT_ID();[/sql] то не знаю.
Если я не ошибаюсь, LAST_INSERT_ID возвращает ID для соединения. Если инсерты идут с разных соединений, то конфликтов не будет.
по моему лучше запросом LAST_INSERT_ID() узнать, так как если после вставки и перед вызовом mysql_insert_id проскочит какой нибудь запрос, то mysql_insert_id ничего путного не вернёт ЗЫ но я могу и ошибаться
Попутно спрошу тебя, потому как на момент нет возможности проверить: Что вернет такой запрос: [sql]INSERT INTO `table` VALUES (null, "Abc"), (null, "Def"); SELECT LAST_INSERT_ID();[/sql] ID самой последней по списку записи?
странно просто был случай такой 1 сначала идёт инсерт; 2 после какой запрос, то ли на выборку, то ли на обновление; 3 далее шёл mysql_insert_id так вот - mysql_insert_id помоему ничего не возравщал, из за этого и происходил глюк в программе заменил mysql_insert_id на mysql_query("SELECT LAST_INSERT_ID()") - и в результате получил то что нужно было - последний ID как вариант пробовал строку 3 поставить после 1-ой, сразу после инсерта - то же работало. Отсюда сделал вывод, что mysql_insert_id надо использовать сразу после инсерта