Оператор Insert ... Select Назад В начало Вперед

Оператор insert ... select позволяет копировать содержимое выборки в произвольную таблицу, в том числе и в таблицу в памяти. Он ускоряет работу прикладного кода и повышает совместимость с языком SQL.

<оператор-копирования-выборки> = insert
  [ <параметры-визуализации> ]
  [ into ] <имя-таблицы> [ ( <список-полей> ) ]
  select <оператор-выборки>
  [ ignore_errors ( <список-кодов> ) ] ;

<параметры-визуализации> - параметры визуализации итераций по таблице. По синтаксису и реализации совпадают с элементом <параметр-визуализации> операторов модификации (раздел "Операторы Insert, Update и Delete. ").

<имя-таблицы> - узел логической таблицы, в который будет вставлена выборка.

<список-полей> - перечислены поля таблицы, в которые производится вставка значений из соответствующих позиций в операторе select.

При перечислении полей в элементе <список-полей> необходимо позиционное соответствие между полями в нем и значениями полей в элементе <оператор-выборки>, при этом примитивные преобразования типов могут быть выполнены компилятором автоматически. Если элемент <список-полей> опущен, то значения из оператора выборки должны соответствовать всем полям таблицы назначения в соответствии с описанием структуры таблицы.

<оператор-выборки> - оператор выборки языка VIP. См. "Оператор описания выборки (select). ".

В операторе insert ... select <оператор-выборки> представляет собой отдельную логическую таблицу, которая не связана ни с логическими таблицами интерфейса, ни с ограничениями, накладываемыми на них в тот или иной момент времени. А это значит, что все ограничения на <оператор-выборки> необходимо задавать внутри него самого.

Если в операторе выборки отсутствуют вычисляемые выражения (в качестве элементов выборки используются константы и поля таблиц базы данных), и если драйвер базы данных реализует соответствующую функцию, то весь оператор может быть выполнен на сервере базы данных без пересылки данных между сервером и клиентом.

<список-кодов> - список кодов ошибок (числа или идентификаторы ts-констант, разделенные запятыми), которые будут игнорироваться в процессе исполнения оператора. См. "Коды ошибок обращения к БД".