Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mysql_insert_id() всегда ли возвращает последний ID?
 
 автор: maxnag   (20.08.2006 в 07:47)   письмо автору
 
 

Всем привет!

Есть такая проблема. Две таблицы табл1 и табл2. В табл1 поле ИД - primary index, в табл2 есть поле ид_табл1 с которым соеденено ИД табл1 по принципу 1 ко многим. Создается накладная. В табл1 пишется ее номер, от кого, кому, дата и всякая общая инфо. В табл 2 создается спецификация этой накладной, т.е. перечисляются все товары для этой накладной. Когда я создаю такой скрипт:

mysql_query("insert в табл1 значения");
для того чтобы узнать ИД последней записи табл1 я воспользовался mysql_insert_id()
mysql_query("insert в табл2 значения");

у меня возникает несколько вопросов. А что если кто-то между первым и вторым операторами сделает еще одну запись ва табл1 (много пользователей в системе), что мне покажет mysql_insert_id(), чей ИД, мой или того другого юзера??? Ведь это существенно для целостности БД.

Тип используемых табл пока MyIsam. Думаю, что здесь помогут транакции, переведу тип табл в InnoDB и вставлю несолько SQL- опрераторов в самое начало (BEGIN), затем те строки которые выше и в конец (COMMIT), но и тут у меня возникает этот вопрос какой ИД покажет мне фун-ция mysql_insert_id()???

Смоделировать такую систуацию с одноврем вставкой очень трудно, поэтому может кто-то читал и знает, прошу помочь?

   
 
 автор: cheops   (20.08.2006 в 11:32)   письмо автору
 
   для: maxnag   (20.08.2006 в 07:47)
 

mysql_insert_id() работает только в пределах текущей сесиии - т.е. они никогда не вернёт идентификатор, который вставил другой пользователь - она об нём просто не может узнать. Она всегда возвращает id, последней записи, которую вставил текущий клиент. Поэтому можете использовать её без опасений.

   
 
 автор: maxnag   (21.08.2006 в 02:51)   письмо автору
 
   для: cheops   (20.08.2006 в 11:32)
 

Вы знаете cheops, я так и думал, что идентификатор который возникает при открытии соед БД присутствует везде, во всех вопросах в рамках этого соединения и соответ во всех операторах (ф-циях) касающ. работы с данными БД, но мне нужно было подтверждение моих мыслей.

Спасибо Вам.

ЗЫ Все переделал, все работает :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования