|
|
|||||||||||||||||||||||||||||
|
Вставка в несколько таблиц OracleИсточник: oraclemaniacs Дмитрий Богомолов
"Multi table insert" или вставка одним запросом в несколько таблиц. Наверняка многим не хватало такой фишки, кто как реализовывал ее, но не знали, что это можно реализовать средствами Oracle. Сегодня встретил заметку в блоге "System Engineering and RDBMS", в которой описывались конструкции, позволяющие делать вставки в несколько таблиц одним запросом. Сразу скажу, что все это возможно для версий 9i и выше. Пример: Т.е. между INSERT и запросом с исходными данными у нас идет конструкция:Двумя словами можно описать следующим образом (для тех, у кого плохо с чтением подобных карт): По некому условию (в качестве параметров условия можно брать значения из исходного запроса) мы делим вставку на несколько, т.е. в зависимости от исходных данных формируем отдельные вставки в разные таблицы либо в одну таблицу но, допустим, в разном формате. Кроме того, мы можем по одному условию делать вставки в несколько таблиц: (из примера в документации)Еще один важный момент, сразу после INSERT указывается ALL (по-умолчанию) либо FIRST, в первом случае все условия проверяются и выполняются все вставки, результат вычисления значений у которых TRUE, во втором варианте проверяются все условия в порядке их указания в запросе до первого FALSE. Вставка, указанная в ELSE, будет выполнена если не выполнено ни одно условие. Еще несколько примеров из доки: Выполняет то же самое что и А следующий пример вставляет заказы больше 2900000 в таблицу special_orders, но не вставляет в large_orders:
Ссылки по теме
|
|