Link Search Menu Expand Document

INSERT VALUES

Содержание раздела
  1. Синтаксис
    1. Ключевое слово RETRY
  2. Ограничения
  3. Примеры
    1. Вставка данных во все столбцы логической таблицы
    2. Вставка данных в указанные столбцы логической таблицы
    3. Вставка данных во все столбцы standalone-таблицы
    4. Вставка данных в указанные столбцы standalone-таблицы
    5. Перезапуск операции по вставке записей

Запрос вставляет записи в логической таблицу или standalone-таблицу.

Синтаксис вставки в standalone-таблицу подразумевает использование внешней writable-таблицы, которая указывает на standalone-таблицу. При вставке данных в standalone-таблицу нужно учитывать ее ограничения в конкретной СУБД.

Если в логической таблице уже есть запись со значением первичного ключа, указанным в запросе, запись обновляется; иначе добавляется новая запись. Новые и существующие записи заполняются одинаково: поля, указанные в запросе, заполняются значениями из запроса, а пропущенные поля — значениями по умолчанию.

Вставка данных в логические и материализованные представления недоступна.

Запрос поддерживается для ADB, ADQM и ADP.

В отличие от UPSERT VALUES, запрос INSERT VALUES полностью обновляет существующую запись. Для частичного обновления существующих записей следует использовать запрос UPSERT VALUES.
Для обновления большого объема данных следует использовать загрузку данных.

Запрос обрабатывается в порядке, описанном в разделе Порядок обработки запросов на обновление данных.

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Месторасположение данных логической таблицы можно задавать запросами CREATE TABLE и DROP TABLE с ключевым словом DATASOURCE_TYPE.

Записи, вставленные в логическую таблицу, добавляются как горячие записи. При фиксации изменений записи становятся актуальными, а предыдущие актуальные записи — архивными. Подробнее о версионировании см. в разделе Версионирование данных.

Незавершенную операцию по вставке данных можно перезапустить, повторив исходный запрос с ключевым словом RETRY. Подробнее обо всех способах обработки незавершенных операций см. в разделе Управление операциями записи.

Синтаксис

Вставка данных во все столбцы таблицы:

INSERT INTO [db_name.]table_name VALUES (value_list_1), (value_list_2), ...

Вставка данных в некоторые столбцы таблицы (с заполнением остальных столбцов значениями по умолчанию):

INSERT INTO [db_name.]table_name (column_list) VALUES (value_list_1), (value_list_2), ...

Перезапуск операции по вставке данных:

RETRY INSERT INTO [db_name.]table_name [(column_list)] VALUES (value_list_1), (value_list_2), ...

Параметры:

db_name

Имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию.

table_name

Имя таблицы, в которую вставляются данные. Возможные значения:

column_list

Список имен столбцов указанной таблицы. Имена перечисляются в круглых скобках через запятую. Список опционален, если количество и порядок вставляемых значений (в списке value_list_N) соответствуют количеству и порядку столбцов в таблице.

value_list_N

Список вставляемых значений. Значения указываются в круглых скобках через запятую. Каждый такой список — это строка, вставляемая в таблицу.

Ключевое слово RETRY

Ключевое слово перезапускает обработку незавершенной операции записи, созданной запросом INSERT VALUES. Пример запроса см. ниже. Список незавершенных операций можно получить с помощью запроса GET_WRITE_OPERATIONS.

Если ключевое слово не указано, система создает новую операцию и обрабатывает ее.

Ключевое слово RETRY недоступно в запросах на вставку записей в standalone-таблицу.

Горячую дельту невозможно закрыть или откатить, пока в ней есть незавершенные операции записи.

Ограничения

  • Вставка данных в логическую таблицу возможна только при наличии открытой дельты (см. BEGIN DELTA).
  • Не допускается параллельное выполнение идентичных запросов.

Примеры

Вставка данных во все столбцы логической таблицы

-- выбор логической базы данных marketing в качестве базы данных по умолчанию
USE marketing;

-- открытие новой (горячей) дельты
BEGIN DELTA;

-- вставка трех записей в логическую таблицу sales
INSERT INTO sales 
VALUES (300011, '2021-08-21 23:34:10', 'ABC0001', 2, 123, 'Покупка по акции "1+1"'), 
       (300012, '2021-08-22 10:05:56', 'ABC0001', 1, 234, 'Покупка без акций'), 
       (300113, '2021-08-22 13:17:47', 'ABC0002', 4, 123, 'Покупка по акции "Лето"');

-- закрытие дельты (фиксация изменений)
COMMIT DELTA;

Вставка данных в указанные столбцы логической таблицы

-- выбор логической базы данных marketing в качестве базы данных по умолчанию
USE marketing;

-- открытие новой (горячей) дельты
BEGIN DELTA;

-- вставка двух записей в логическую таблицу sales (без опционального значения description)
INSERT INTO sales 
       (id, transaction_date, product_code, product_units, store_id)
VALUES (300014, '2021-08-23 09:34:10', 'ABC0003', 3, 123), 
       (300012, '2021-08-23 20:05:56', 'ABC0001', 6, 234);

-- закрытие дельты (фиксация изменений)
COMMIT DELTA;

Вставка данных во все столбцы standalone-таблицы

-- вставка записей в standalone-таблицу, на которую указывает внешняя writable-таблица agreements_ext_write_adp
INSERT INTO marketing.agreements_ext_write_adp 
VALUES (100, 111111, 'AB12345', '2022-02-01', '2022-02-02', '2024-02-02', 'Договор с ООО "Квадрат"'), 
       (101, 222222, 'AB67890', '2022-02-11', '2022-02-12', '2025-02-12', 'Договор с ООО "Круг"');

Вставка данных в указанные столбцы standalone-таблицы

-- вставка записей в standalone-таблицу, на которую указывает внешняя writable-таблица agreements_ext_write_adp,
--  без некоторых опциональных значений
INSERT INTO marketing.agreements_ext_write_adp (id, client_id, number, signature_date)
VALUES (102, 333333, 'AB11111', '2022-01-01');

Перезапуск операции по вставке записей

-- выбор логической базы данных sales в качестве базы данных по умолчанию
USE marketing;

-- открытие новой (горячей) дельты
BEGIN DELTA;

-- вставка записи в логическую таблицу sales (без опционального значения description)       
INSERT INTO sales
       (id, transaction_date, product_code, product_units, store_id)
VALUES (300015, '2021-10-15 10:11:01', 'ABC0003', 1, 123);

-- перезапуск обработки операции по вставке записи
RETRY INSERT INTO sales
       (id, transaction_date, product_code, product_units, store_id)
VALUES (300015, '2021-10-15 10:11:01', 'ABC0003', 1, 123); 

-- закрытие дельты (фиксация изменений)
COMMIT DELTA;