sql - вставить в несколько таблиц в одном запросе

при условии, что у меня есть две таблицы,names а такжеphones и я хочу вставить данные из некоторого ввода в таблицы, в одном запросе - Как это можно сделать?

Пожалуйста, если это возможно, объясните синтаксис.

 yossi05 окт. 2010 г., 03:30
mysql, последняя версия (я видел некоторые решения, которые использовали «выходные данные» для этой работы, но я предпочитаю избегать обходов ..)
 LittleBobbyTables05 окт. 2010 г., 03:27
Я предполагаю, что ответ будет «Вы не можете» для всех баз данных, но на всякий случай, какую базу данных вы используете?

Ответы на вопрос(3)

Решение Вопроса

MySQL не поддерживает вставку нескольких таблиц в одномВСТАВИТЬ заявление, Оракул - единственный, кого я знаю об этом, как ни странно ...

INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
 Limited Atonement24 сент. 2015 г., 16:44
Ответ Джошуа Смита лучше, чем этот.

У меня такая же проблема. Я решаю это с помощью цикла.

Пример:

Если я хочу написать в 2идентичный таблицы, используя цикл

for x = 0 to 1

 if x = 0 then TableToWrite = "Table1"
 if x = 1 then TableToWrite = "Table2"
  Sql = "INSERT INTO " & TableToWrite & " VALUES ('1','2','3')"
NEXT

или

ArrTable = ("Table1", "Table2")

for xArrTable = 0 to Ubound(ArrTable)
 Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT

Если у вас небольшой запрос, я не знаю, является ли это лучшим решением, но если ваш запрос очень большой, и он находится внутри динамического сценария с условиями if / else / case, это хорошее решение.

 Janaka R Rajapaksha30 апр. 2014 г., 09:26
полезно, когда вам нужно вставить одинаковые значения и / или одинаковое количество значений для каждой таблицы.

Ты не можешь Тем не менее, вы можете использоватьсделка и оба они должны содержаться в одной транзакции.

START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;

http://dev.mysql.com/doc/refman/5.1/en/commit.html

 steve31 окт. 2012 г., 17:07
Приветствия, Джошуа, это мне очень помогло. Хотя в MySql я думаю, что это START, а не BEGIN.
 J.D. Pace21 окт. 2015 г., 18:18
@Clox: Это частично цель транзакций. Другая цель состоит в том, чтобы база данных находилась в известном стабильном состоянии до, во время и после транзакции. Это означает, что параллельные запросы никогда не увидят частично зафиксированные данные.
 Clox11 мая 2013 г., 11:10
Какова цель транзакций? Я понимаю, что если что-то пойдет не так в одном из запросов, то все запросы будут откатываться. Это оно? Или есть также некоторое увеличение производительности?

Ваш ответ на вопрос