Типы мультитабличных инструкций INSERT

Существуют разные типы мультитабличных инструкций 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

Похожие записи