---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.4
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/replace_into.md
  - https://ydb.tech/docs/ru/yql/reference/syntax/replace_into.md
sourcePath: ru/core/yql/reference/syntax/replace_into.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# REPLACE INTO

<!-- source: ru/yql/reference/_includes/limitation-column-row-in-read-only-tx-warn.md -->
{% note warning %}

<!-- source: ru/yql/reference/_includes/limitation-column-row-in-read-only-tx.md -->
В настоящее время одновременное использование [колоночных](https://ydb.tech/docs/ru/concepts/glossary.md#column-oriented-table) и [строковых](https://ydb.tech/docs/ru/concepts/glossary.md#row-oriented-table) таблиц поддерживается в транзакциях, в которых данные только читаются, но не изменяются. Поддержка транзакций с возможностью модификации данных при одновременном использовании строковых и колоночных таблиц находится в разработке.

Если попытаться выполнить операцию записи в транзакции, в которой задействованы и колоночные, и строковые таблицы, транзакция завершится с ошибкой: `Write transactions that use both row-oriented and column-oriented tables are disabled at current time`.
<!-- endsource: ru/yql/reference/_includes/limitation-column-row-in-read-only-tx.md -->

{% endnote %}
<!-- endsource: ru/yql/reference/_includes/limitation-column-row-in-read-only-tx-warn.md -->

В отличие от [`INSERT INTO`](https://ydb.tech/docs/ru/yql/reference/syntax/insert_into.md) и [`UPDATE`](https://ydb.tech/docs/ru/yql/reference/syntax/update.md), запросы [`UPSERT INTO`](https://ydb.tech/docs/ru/yql/reference/syntax/upsert_into.md) и `REPLACE INTO` не требуют предварительного чтения данных, поэтому выполняются быстрее. `REPLACE INTO` сохраняет данные в таблицу с перезаписью строк по первичному ключу. Если заданный первичный ключ отсутствует, в таблицу будет добавлена новая строка. Если задан существующий первичный ключ, строка будет перезаписана. При этом значения столбцов, не определенных в операции `REPLACE INTO`, заменяются на значения по умолчанию.

## Примеры

* Задание значений для `REPLACE INTO` c помощью `VALUES`:

```yql
  REPLACE INTO my_table (Key1, Key2, Value2) VALUES
      (1u, "One", 101),
      (2u, "Two", 102);
  COMMIT;
  ```

* Получение значений для `REPLACE INTO` с помощью выборки `SELECT`:

```yql
  REPLACE INTO my_table
  SELECT Key AS Key1, "Empty" AS Key2, Value AS Value1
  FROM my_table1;
  COMMIT;
  ```

