Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
riverhead
Member

Откуда:
Сообщений: 13
Собственно сабж: Как одним оператором INSERT вставить строки сразу в 2 разных таблицы?
10 мар 11, 01:34    [10346807]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
INSERT ALL
10 мар 11, 01:45    [10346813]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
multi_table_insert
10 мар 11, 01:55    [10346815]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
riverhead
Member

Откуда:
Сообщений: 13
спасибо, разобрался

INSERT ALL
INTO TAB1(ID,TXT,CODE,A1,A2) VALUES(1,'ggg',7,8,9)
INTO TABLE01(ID, NAME,CNT) VALUES (5,'Пятый',10)
SELECT * FROM dual;
10 мар 11, 12:01    [10348270]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
Orahome92
Guest
riverhead, а в чем смысл сего действа? чем оно лучше двух отдельных инсертов?
10 мар 11, 16:18    [10350729]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
an0nym
Member

Откуда:
Сообщений: 7076
Orahome92
riverhead, а в чем смысл сего действа? чем оно лучше двух отдельных инсертов?

Не утверждаю, но скорее всего смысл в таком INSERTе есть, когда SELECT достаточно сложный и выполняеть его полностью/частично для каждого отдельного INSERTа накладно, как и материализовывать во временную таблицу. Другой причины не вижу.
10 мар 11, 16:21    [10350753]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2855
an0nym
Orahome92
riverhead, а в чем смысл сего действа? чем оно лучше двух отдельных инсертов?

Не утверждаю, но скорее всего смысл в таком INSERTе есть, когда SELECT достаточно сложный и выполняеть его полностью/частично для каждого отдельного INSERTа накладно, как и материализовывать во временную таблицу. Другой причины не вижу.

scn
10 мар 11, 16:26    [10350805]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
Genry
Member

Откуда:
Сообщений: 16
В синтаксисе предусмотрено вставка по некому условию из селекта. Учень удобно писать логи, если вставка не производиться в основную таблицу
10 мар 11, 18:42    [10351690]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
Ewg_
Member

Откуда: Moskow Region
Сообщений: 365
неужели нельзя обойти ограничение "не использовать сиквенсы" ???

The subquery of the multitable insert statement cannot use a sequence.


так хотелось вставить записи в 2 таблицы с одним общим ID.
:(
15 дек 11, 14:05    [11771000]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Ewg_
неужели нельзя обойти ограничение "не использовать сиквенсы" ???
The subquery of the multitable insert statement cannot use a sequence.

так хотелось вставить записи в 2 таблицы с одним общим ID.
:(
Предварительно можно сделать single-tabe insert в GTT, а потом уже из нее вставлять в целевые.
15 дек 11, 14:09    [11771039]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
-2-
Member

Откуда:
Сообщений: 15330
Ewg_
с одним общим ID.
А ты попробуй в VALUES
15 дек 11, 14:13    [11771070]     Ответить | Цитировать Сообщить модератору
 Re: Как одним INSERT вставить строки сразу в 2 разных таблицы?  [new]
Павел А
Member

Откуда: Первопрестольная
Сообщений: 58
-2-
А ты попробуй в VALUES
примерно так

+
test@ORCL> create table tab1
  2   ( id Number);

Table created.

test@ORCL> create table table01
  2   ( id Number);

Table created.

test@ORCL> create sequence tab1_table01_s1;

Sequence created.

test@ORCL> INSERT ALL
  2  INTO TAB1(ID) VALUES(tab1_table01_s1.NEXTVAL)
  3  INTO TABLE01(ID) VALUES (tab1_table01_s1.NEXTVAL)
  4  SELECT * FROM DUAL;

2 rows created.

test@ORCL> SELECT * FROM TAB1;

        ID
----------
         1

test@ORCL> SELECT * FROM TABLE01;

        ID
----------
         1
15 дек 11, 15:24    [11771902]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить