CREATE PROXY TABLE
Содержание раздела
Поддерживается в версиях: 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6.
Запрос создает прокси-таблицу с размещением в указанном датасорсе.
Прокси-таблицу также можно создать с помощью запроса CREATE TABLE с указанием ключевого слова OPTIONS. Изменить прокси-таблицу можно запросами ALTER TABLE
, удалить — запросом DROP TABLE.
Результат выполнения
При успешном выполнении запроса система создает прокси-таблицу в логической базе данных и соответствующую ей физическую таблицу в указанном датасорсе.
Если в датасорсе есть физическая таблица с таким же именем, как у прокси-таблицы, она будет удалена при создании прокси-таблицы.
Как работает запрос
Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь. Каждое создание таблицы записывается в журнал, который можно посмотреть с помощью запроса GET_CHANGES.
При ошибке исполнения корректного запроса система блокирует все последующие DDL-запросы в логической БД. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.
Синтаксис
CREATE PROXY TABLE [IF NOT EXISTS] [db_name.]table_name (
column_name data_type [ NULL | NOT NULL ],
[ ... , ]
PRIMARY KEY (column_name[, ... ])
)
[DISTRIBUTED BY (column_name[, ... ])]
[DATASOURCE_TYPE ('datasource_name')]
[LOGICAL_ONLY]
Параметры:
db_name
-
Имя логической базы данных, в которой создается таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.
table_name
-
Имя создаваемой прокси-таблицы, уникальное среди логических сущностей логической БД.
column_name
-
Имя столбца таблицы.
data_type
-
Тип данных столбца
column_name
. Возможные значения см. в разделе Логические типы данных.
Ключевое слово IF NOT EXISTS
Включает проверку наличия прокси-таблицы до попытки создания. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном создании прокси-таблицы, иначе — только при успешном создании прокси-таблицы.
Ключевое слово PRIMARY KEY (column_name[, ... ])
Задает список столбцов, входящих в первичный ключ таблицы. Ключевое слово обязательно для всех типов датасорсов, кроме ADP.
Ключевое слово DISTRIBUTED BY (column_name[, ... ])
Задает список столбцов, входящих в ключ шардирования таблицы. Все указываемые столбцы должны присутствовать в первичном ключе.
Ключевое слово обязательно для датасорсов всех типов, кроме ADP.
Ключевое слово DATASOURCE_TYPE ('datasource_name')
Задает имя датасорса, где будут размещены данные прокси-таблицы. Имя должно быть указано в соответствии с конфигурацией.
В отличие от обычной логической таблицы, прокси-таблица всегда размещается в одном датасорсе, поэтому DATASOURCE_TYPE
для прокси-таблицы задает имя только одного датасорса.
Ключевое слово обязательно, если хранилище данных содержит более одного датасорса.
Ключевое слово LOGICAL_ONLY
Позволяет создать таблицу только на логическом уровне (в логической схеме данных), не обновляя физическую схему в хранилище данных.
Если ключевое слово не указано, таблица создается на логическом и физическом уровнях.
Варианты ответа
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Ограничения
Ограничения выполнения
- Выполнение запроса недоступно, если установлен запрет на изменение сущностей.
Ограничения имен
- Имена таблицы и ее столбцов должны соответствовать требованиям, описанным в разделе Соглашения об именах.
- Имена столбцов должны быть уникальны в рамках прокси-таблицы.
Другие ограничения
- Первичный ключ, если он указан, должен включать все столбцы ключа шардирования.
- Информационная схема обновляется асинхронно, поэтому созданная таблица может не сразу появиться в информационной схеме.
Пример
Создание прокси-таблицы с размещением ее данных в датасорсе adp
:
CREATE PROXY TABLE marketing.payments_proxy (
id BIGINT NOT NULL,
agreement_id BIGINT,
type_code VARCHAR(16),
amount DOUBLE,
currency_code VARCHAR(3),
description VARCHAR,
PRIMARY KEY (id)
)
DISTRIBUTED BY (id)
DATASOURCE_TYPE ('adp')