Существуют разные типы мультитабличных инструкций INSERT
:
- безусловная инструкция
INSERT
; - условная инструкция
INSERT ALL
; - инструкция трансформации
INSERT
; - условная инструкция
INSERT FIRST
.
Для указания типа выполняемой инструкции INSERT
используются разные предложения.
Типы мультитабличных инструкций INSERT
:
- безусловная инструкция
INSERT
: для каждой строки, возвращаемой подзапросом, в каждую целевую таблицу вставляется строка. - условная инструкция
INSERT ALL
: для каждой строки, возвращаемой подзапросом, в каждую целевую таблицу вставляется строка, если выполняется заданное условие. - инструкция трансформации
INSERT
: это особый вариант безусловной инструкцииINSERT ALL
. - условная инструкция
INSERT FIRST
: для каждой строки, возвращаемой подзапросом, вставляется строка в первую целевую таблицу, в которой выполняется заданное условие.
Синтаксис мультитабличных инструкций INSERT
- Синтаксис мультитабличной инструкции
INSERT
: conditional_insert_clause
:
На рисунке отображается общий формат мультитабличной инструкции INSERT
.
Безусловная инструкция INSERT
: ALL into_clause
Для выполнения безусловной мультитабличной инструкции INSERT
задайте параметр ALL
, сопровождаемый несколькими предложениями insert_into_clauses
. Каждое предложение insert_into_clause
выполняется сервером Oracle однократно для каждой строки, возвращаемой подзапросом.
Условная инструкция INSERT
: conditional_insert_clause
Для выполнения условной мультитабличной инструкции INSERT
задайте conditional_insert_clause
. Каждое предложение insert_into_clause
фильтруется сервером Oracle через соответствующее условие WHEN
, которым определяется, будет ли выполняться это предложение insert_into_clause
. Одиночная мультитабличная инструкция INSERT
может содержать до 127 предложений WHEN
.
Условная инструкция INSERT
: ALL
Если задать параметр ALL
, сервером Oracle проверяется каждое предложение WHEN
независимо от результатов для любого другого предложения WHEN
. Для каждого предложения WHEN
, условие которого по результатам проверки имеет значение True (истина), сервером Oracle выполняется соответствующий список предложений INTO
.
Условная инструкция INSERT
: FIRST
Если задать параметр FIRST
, сервер Oracle проверяет каждое предложение WHEN
в том порядке, в котором оно появляется в инструкции. Если первое предложение WHEN
имеет значение True, сервер Oracle выполняет соответствующее предложение INTO
и пропускает последующие предложения WHEN
для заданной строки.
Условное предложение INSERT
: ELSE
Если для заданной строки ни одно из предложений WHEN
не имеет значение True:
- если задано предложение
ELSE
, сервер Oracle выполняет список предложенийINTO
, связанный с предложениемELSE
; - если предложение
ELSE
не задано, сервер Oracle не выполняет никаких действий для этой строки.
Ограничения, накладываемые на мультитабличные инструкции INSERT
- Мультитабличные инструкции
INSERT
можно выполнять только над таблицами, а не над представлениями и не над материализованными представлениями. - Мультитабличную инструкцию
INSERT
невозможно выполнить над удаленной (нелокальной) таблицей. - При выполнении мультитабличной инструкции
INSERT
невозможно указать выражение для коллекции таблиц. - В мультитабличной инструкции
INSERT
невозможно объединить предложенияinsert_into_clauses
, чтобы задать в сумме более 999 целевых столбцов.
Далее: Поля INTERVAL