Механизм mysql_insert_id в php. Как это работает? Транзакции. Как это работает?

esomkin

Новичок
Механизм mysql_insert_id в php. Как это работает? Транзакции. Как это работает?

Доброго дня всем

Предположим некто вставляет в mysql таблицу запись (неважно какую), а затем выбирает ID вставленной записи используя mysql_insert_id().

Вопрос в следующем:

- если кто-то другой между этими двумя операциями вставит свою запись в ту же таблицу, то какой ID возвратится первому "некто". Есть ли в mysql свой механизм разграничения возврата ID между подключениями или необходимо лочить таблицу для корректного выполнения двух операций (вставка и выборка ID).

Также прошу кратко пояснить идею транзакций, я не совсем их понимаю.

Предположим некто начинает транзакцию, а в этот момент некто2 проводит операцию и транзакция становится невозможной, происходит откат. Чтобы первый мог завершить операцию, он должен проводить транзакцию в цикле пока она не выполниться или я чего-то не понимаю. Объясните пожалуйста...

С уважением, Евгений
 

iceman

говнокодер
почитай мануал по SQL про аналогичную же функцию...
mysql_insert_id() - всего лишь обертка...

ах да, все будет пучком ;-)
 

esomkin

Новичок
Шутникъ!) А ответить кратко и по транзакциям нельзя?

-~{}~ 27.08.10 11:12:

И что из этого противоречия правильно?

Цитата:
mysql_insert_id() returns 0 if the previous statement does not use an AUTO_INCREMENT value. If you need to save the value for later, be sure to call mysql_insert_id() immediately after the statement that generates the value.

Цитата:
The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients.

-~{}~ 27.08.10 11:23:

Разобрался - в пределах одного соединения возвращается "свой" ID, то есть перепутать с другими соединениями его невозможно.

Теперь буду мучать транзакции
 

dimagolov

Новичок
а в этот момент некто2 проводит операцию и транзакция становится невозможной
как ты себе это представляешь? это нужно ОЧЕНЬ стараться, чтобы написать такой взаимозависимый код. но именно транзакции тут не при чем. транзакция, это набор изменений, которые принимаются или не принимаются как единое целое, в то время как внутри могут быть взаимозависимыми (на пример 2-й запрос может использовать id записи, вставленной 1-м запросом)
 
Сверху