Несколько запросов на вставку - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть три таблицы, которые в основном каскадно, например:

  • раздел
  • раздел (ссылка на идентификатор темы)
  • подраздел (ссылка на идентификатор темы и идентификатор раздела)

Каков наилучший метод написания операторов mysql для создания начальной темы / раздела / подраздела, чтобы я мог получить идентификаторы (auto_incremented) вновь созданных строк и использовать их для вставки их во вторуюдва?

edit Я использую phpbb3, не знаю, если это имеет огромное значение, но я обычно использую функцию $ db-sql_query ()

Ответы [ 3 ]

1 голос
/ 10 ноября 2010

От родителя вниз по линии.
Затем вы можете использовать либо LAST_INSERT_ID () , либо INSERT в SELECT:

INSERT INTO TOPIC
  (topic_id, topic)
VALUES (DEFAULT, $topic);

INSERT INTO SECTION
  (topic_id, section)
SELECT topic_id, $section
  FROM TOPIC
 WHERE topic = $topic

INSERT INTO SUBSECTION
  (section_id, topic_id, subsection)
SELECT section_id, topic_id
  FROM SECTION 
 WHERE section = $section

В этом примере предполагается, что TOPIC.topic_id, SECTION.section_id и SUBSECTION являются auto_increment, столбцами первичного ключа.

1 голос
/ 10 ноября 2010

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

0 голосов
/ 10 ноября 2010

Насколько я понимаю, есть только один путь - сверху вниз.
Чтобы добавить подраздел в раздел, у вас должен быть уже вставлен раздел.
Чтобы добавить тему в подраздел, сначала убедитесь, что вы добавили подраздел.
По пути вы отслеживаете последний вставленный идентификатор (если вы только что его создали), чтобы передать его следующему объекту в дальнейшем.

...