Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте, подскажите, пожалуйста. При записи данных в базу нужно узнать какой именно автоинкремент будет записан, чтобы совершить какие либо действия.
Т.е. скажем я наполняю базу предприятий через insert into и мне нужно получить id предприятия, которое будет в это время записано. Выдернуть его сразу после запроса, наверное будет нелогично, тк. не исключено, что в то же время кто-то другой будет заносить предприятия. Надеюсь, если какой-либо способ получить его. Отрицательный ответ тоже будет полезной информацией.
Неактивен
Неактивен
Большое спасибо за ответ, но возник вопрос.
Насколько я понимаю, сначала нужно сделать
insert into
а потом
SELECT LAST_INSERT_ID();
А что будет, если скажем я заношу 10 тысяч предприятий, которые поочередно заносятся через insert into скажем в течении 10 минут, а в это время какой-нибудь пользователь решил занести свое предприятие.
Также не ясно в чем в таком случае разница между вышеуказанным Вариантом и таким
сначала сделать
insert into
а потом
SELECT ... order by id desc
Т.е. по логике вещей в этом случае я тоже получу последнюю запись по id, который является автоинкрементом.
Т.е. для меня главное не получить ненакором запись, которую заносит пользователь.
Неактивен
Другой пользователь будет заводить своё предприятие в рамках своей сессии, а не Вашей сессии, а функция LAST_INSERT_ID возвращает идентификатор именно в рамках сессии, так что Вы не получите id от записи, занесенной другим пользователем.
Неактивен
platedz написал:
сначала сделать
insert into
а потом
SELECT ... order by id desc
Вот если так, то Вы действительно можете получить ID записи от пользователя в другой сессии.
Неактивен
Кроме прочего нашел еще следующую информацию. Но насколько понял лучше использовать LAST_INSERT_ID, только не разобрался в чем разница.
Нашел тут http://веб-информ.рф/php/function.mysql-insert-id.html
Неактивен
Спасибо за ответ. Про сессии не знал. Было бы интересно почитать что-либо по этому поводу, только на русском языке. Т.ч. если у кого-то найдется по данному вопросу пара интересных ссылок буду благодарен.
Неактивен
platedz написал:
Спасибо за ответ. Про сессии не знал. Было бы интересно почитать что-либо по этому поводу, только на русском языке. Т.ч. если у кого-то найдется по данному вопросу пара интересных ссылок буду благодарен.
А что вам непонятно? когда ваш скрипт выполняет какой либо запрос или несколько он открывает соединение (сессию) с сервером БД. В рамках этого соединения функция LAST_INSERT_ID() будет возвращать значение автоинкрементного поля последней вставленной записи, если оно, поле, существует и запись вставилась успешно. У другого пользователя будет другое соединение и другой результат этой функции, если он вставит запись
Отредактированно Shopen (01.11.2012 13:47:11)
Неактивен
Т.е. то что между mysql_connect и mysql_close?
Неактивен
platedz написал:
Т.е. то что между mysql_connect и mysql_close?
Именно.
Неактивен
platedz написал:
Т.е. то что между mysql_connect и mysql_close?
а что такое mysql_connect и mysql_close?
Это я к тому, что это зависит от реализации приложения клиента. если вы про пэхапэ - то да
Неактивен
Большое спасибо всем ответившим.
Вообще про php. Но для расширения кругозора было бы интересно почитать что-нибудь на эту тему. Т.е. о том что из себя представляет сессия в приципе в mysql.
Неактивен
Для PHP в данном случае чистый SQL юзать не обязательно, есть функция mysqli_insert_id
Неактивен
Страниц: 1