LINUX.ORG.RU

MySQL: multiple insert


0

0

Есть 2 неких сущности, определенные в таблицах:

create table t1 (
  id int not null auto_increment primary key,
  . . .
);

create table t2 (
  id int not null auto_increment primary key,
  . . .
);

И таблица, определяющая связи many to many:

create table t1_t2 (
  id int not null auto_increment primary key,
  t1_id int not null references t1(id),
  t2_id int not null references t2(id)
);

Задача: при создании записи в t1 нужно расставить соответствия между ней и записями t2 на основе списка t2.id.

Можно, конечно, пройтись циклом по массиву и на каждый сделать insert into t1_t2, 
но БД и прога физически расположены на разных серверах, и отдельные запросы на каждую запись отнюдь не прибавляют скорости. 
Логичный вывод - использовать хранимые процедуры.

Вопрос: как передать процедуре список t2.id, которые нужно инсертить?
★★★
Ответ на: комментарий от roller

Количество записей может быть произвольным, от 1 до кол-ва записей в t2, массив t2.id формируется юзером

friday ★★★
() автор топика
Ответ на: комментарий от roller

В общем, создаем запись в t1 через форму. В этой же форме ставим галки, каким записям t2 она будет соответствовать. Чтобы не гонять по сети лишние данные, хотелось бы выполнить соотв. инсерты в t1_t2 в одном запросе, т.е. процедурой, передав ей список t2.id.

friday ★★★
() автор топика
Ответ на: комментарий от friday

insert into t1_t2(t1, t2) values
  (10, 1),
  (10, 2),
   ...
   (10, 56);

10 - это id вставленной записи в t1
1, 2, ... 56 - выбранные галки из t2

roller ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.