Многотабличные команды INSERT
Многотабличные команды INSERT могут использоваться в системах поддержки хранилищ данных для передачи информации из одного или более источников данных в набор целевых таблиц.
Такие команды обеспечивают существенное повышение производительности за счет:
▫️использования одной команды DML вместо нескольких команд INSERT...SELECT ;
▫️использования одной команды DML вместо процедуры, в которой выполняются вставки при условии (IF...THEN).
Виды:
▫️INSERT ALL - вставка идет во все таблицы в запросе.
▫️INSERT FIRST - вставка идет при первом совпадении с условием.
Поскольку мало кто знает про данный вид операции INSERT, постараюсь подробно рассмотреть их в следующих постах.
#sql #insert
Многотабличные команды INSERT могут использоваться в системах поддержки хранилищ данных для передачи информации из одного или более источников данных в набор целевых таблиц.
Такие команды обеспечивают существенное повышение производительности за счет:
▫️использования одной команды DML вместо нескольких команд INSERT...SELECT ;
▫️использования одной команды DML вместо процедуры, в которой выполняются вставки при условии (IF...THEN).
Виды:
▫️INSERT ALL - вставка идет во все таблицы в запросе.
▫️INSERT FIRST - вставка идет при первом совпадении с условием.
Поскольку мало кто знает про данный вид операции INSERT, постараюсь подробно рассмотреть их в следующих постах.
#sql #insert
🔥1
INSERT ALL
Вставка производится во все указанные таблицы, если они удовлетворяют условиям.
1) Безусловная вставка - вставка происходит во все таблицы сразу.
2) Вставка с условием - вставка происходит только тогда, когда соблюдается указанное условие.
Синтаксис смотрите на скриншоте.
❗️Поведение последовательностей не всегда то, которое мы ожидаем.
NEXTVALUE будет вызываться для каждой обрабатываемой строки вне зависимости от ситуации (подходит или нет условие). Аккуратно работаем с этим.
Выход из ситуации: работа через pl/sql-процедуру c pragma udf.
#sql #insert
Вставка производится во все указанные таблицы, если они удовлетворяют условиям.
1) Безусловная вставка - вставка происходит во все таблицы сразу.
2) Вставка с условием - вставка происходит только тогда, когда соблюдается указанное условие.
Синтаксис смотрите на скриншоте.
❗️Поведение последовательностей не всегда то, которое мы ожидаем.
NEXTVALUE будет вызываться для каждой обрабатываемой строки вне зависимости от ситуации (подходит или нет условие). Аккуратно работаем с этим.
Выход из ситуации: работа через pl/sql-процедуру c pragma udf.
#sql #insert
🔥1
INSERT FIRST
Вставка будет осуществляться в первую таблицу, удовлетворяющую условиям.
Синтаксис смотрите на скриншоте.
❗️Поведение последовательностей не всегда то, которое мы ожидаем.
NEXTVALUE будет вызываться для каждой обрабатываемой строки вне зависимости от ситуации (подходит или нет условие). Аккуратно работаем с этим.
Выход из ситуации: работа через pl/sql-процедуру c pragma udf.
#sql #insert
Вставка будет осуществляться в первую таблицу, удовлетворяющую условиям.
Синтаксис смотрите на скриншоте.
❗️Поведение последовательностей не всегда то, которое мы ожидаем.
NEXTVALUE будет вызываться для каждой обрабатываемой строки вне зависимости от ситуации (подходит или нет условие). Аккуратно работаем с этим.
Выход из ситуации: работа через pl/sql-процедуру c pragma udf.
#sql #insert
🔥1