У меня есть три типа данных, tableA
, tableB
и tableAB
. Содержимое не очень важно, только tableA
и tableB
имеют первичные ключи, а tableAB
связывает ключи в двух таблицах. Основная структура ниже:
Выберите из Вставить в
aId|data
---+----
1 |4
2 |83
bId|data
---+----
1 |a
2 |cd
3 |bf
abId|aId|bId
----+---+---
1 |1 |1
2 |1 |2
3 |2 |3
То, что я хотел бы сделать, это объединить вставки всех этих трех таблиц в одном запросе, но я не знаю, как. Текущая идея, с которой я работаю, ниже, но она не работает. Важно отметить, что aId
может относиться к нескольким bId
, но у каждого bId
будет только один aId
, ссылающийся на него. Таким образом, aId
могут не ссылаться на существующие bId
. Большие вещи, с которыми я борюсь, - это 1) значение insert
происходит от другого insert
и 2) имитирует несколько вложений, для bId
, в одном запросе.
Текущий запрос:
insert into tableAB(aId, bId)
values((select aId from(insert into tableA(data) values(5))),
(select bId from(insert into tableB(data) values("f"))));
Я действительно не уверен, что несколько вставок в одном запросе можно и не знаю, как писать его выше.
Вставка нескольких таблиц в одном запросе не поддерживается MySQL. :( – Sevle
Вы можете делать то, что хотите в Postgres, но MySQL не поддерживает вставки в несколько таблиц в одном запросе. –
Существует LAST_INSERT_ID, см. [Manual] (http://dev.mysql.com/doc/ refman/5.7/en/information-functions.html # function_last-insert-id), образец: http://www.sqlfiddle.com/#!9/a8102/1/0 –