[Mysql] Insert into SELECT в несколько таблиц с пользовательскими переменными?

RedRabbit

Мой дом здесь!
Регистрация
11 Июл 2008
Сообщения
607
Реакции
256
Здравствуйте, как реализовать:
Вставку из одной таблицы я сделал
Код:
INSERT INTO `BD2`.`table2`
SELECT
@id:= NULL,
--.......перечисляю все столбцы в перемененные

FROM `BD1`.`table1`
WHERE
...
ORDER BY
    ...... DESC
LIMIT 1000;


1. Почему так не работает?
Код:
INSERT INTO `BD2`.`table2` (@id, @next1,@next2............)
SELECT
@id:= NULL,
--.......перечисляю все столбцы в перемененные

FROM `BD1`.`table1`
WHERE
...
ORDER BY
    ...... DESC
LIMIT 1000;

2. Но как сделать две вставки в пределах одного запроса при одном SELECT????

Код:
INSERT INTO `BD2`.`table2` (@id, @next1,@next2............)
INSERT INTO `BD3`.`table3` (@next3,@next5............)
SELECT
@id:= NULL,
--.......перечисляю все столбцы в пременные
FROM `BD1`.`table1`
WHERE
...
ORDER BY
    ...... DESC
LIMIT 1000;
 
1. Необходимо чтобы количество полей и тип данных совпадал table1 и table2.
2. Mysql не поддерживает двойную вставку insert за один запрос.
3. Чтобы объединять потоки запросов уже давно используются транзакции
Код:
BEGIN
START TRANSACTION;
SELECT
@id:= NULL,
--.......перечисляю все столбцы в пременные
FROM `BD1`.`table1`
WHERE
...;
ORDER BY
...... DESC
LIMIT 1000;
INSERT INTO `BD2`.`table2` (@id, @next1,@next2............);
INSERT INTO `BD3`.`table3` (@next3,@next5............);
COMMIT;
    ELSE
        ROLLBACK;
    END IF;
END
4. У таблицы Engine=InnoDB
 
Назад
Сверху