Использование mysql_insert_id для вставки большого количества данных - PullRequest
3 голосов
/ 15 сентября 2010

Я хочу использовать PHP и MySQL для вставки данных в таблицу данных и связанную с ней таблицу «многие ко многим».Автоинкрементный первичный идентификатор таблицы данных используется в таблице «многие ко многим».Итак, мне нужно знать идентификаторы таблицы данных для вставки в таблицу «многие ко многим».

В настоящее время я думаю, что лучший способ достичь этого - использовать цикл, который сначала вставлялся бы вЗатем таблица данных использует mysql_insert_id () для вставки в таблицу «многие ко многим».Это лучший способ сделать это?

Кроме того, нужно ли мне беспокоиться о получении неверного идентификатора с этой функцией?Многие работники будут использовать этот сценарий данных в одно и то же время, поэтому я обеспокоен тем, что идентификатор одного рабочего запроса в конечном итоге будет возвращен при вызове mysql_insert_id () другого.Это действительная проблема, и если да, то как я могу справиться с ней?

Ответы [ 2 ]

3 голосов
/ 15 сентября 2010

Вызов mysql_insert_id() для таблицы с идентификатором auto_increment является абсолютно правильным подходом.

Пока вы вызываете mysql_insert_id() сразу после вызова mysql_query() для вставки строки, вы ненужно беспокоиться о получении неправильного идентификатора.PHP и MySQL позаботятся обо всем этом за вас.

0 голосов
/ 15 сентября 2010

Если вы можете просто заблокировать стол.

LOCK TABLE myTable FOR WRITE;
SELECT MAX(id) FROM myTable;
INSERT....
INSERT....
INSERT....
SELECT MAX(id) FROM myTable;
UNLOCK TABLES;

Это не позволит кому-либо делать что-либо с myTable, но у вас будет минимальный / максимальный диапазон для ваших идентификаторов.

-daniel

...