CREATE FOREIGN TABLE
Определение нового внешнего объекта.
Синтаксис
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
column_name data_type [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ]
[, ... ]
] )
SERVER server_name
[ OPTIONS ( [ mpp_execute { 'master' | 'any' | 'all segments' } [, ] ] option 'value' [, ... ] ) ]
где column_constraint:
[ CONSTRAINT constraint_name ]
{ NOT NULL |
NULL |
DEFAULT default_expr }
Описание
Команда CREATE FOREIGN TABLE создает новую внешнюю таблицу в текущей базе данных. Пользователь, создающий внешнюю таблицу, становится её владельцем.
Если имя таблицы указано с указанием схемы (например, CREATE FOREIGN TABLE myschema.mytable ...), YMatrix создаст таблицу в указанной схеме. В противном случае внешняя таблица будет создана в текущей схеме. Имя внешней таблицы должно отличаться от имён всех других внешних таблиц, таблиц, последовательностей, индексов или представлений в этой же схеме.
Поскольку команда CREATE FOREIGN TABLE автоматически создает тип данных, представляющий составной тип, соответствующий строке внешней таблицы, имя внешней таблицы не может совпадать с именем любого существующего типа данных в той же схеме.
Для создания внешней таблицы необходимо иметь привилегии USAGE на внешнем сервере, а также привилегии USAGE для всех типов столбцов, используемых в таблице.
Параметры
IF NOT EXISTS
- Если объект с таким именем уже существует, ошибка не возникает. В этом случае YMatrix выдает уведомление. Обратите внимание, что нет гарантии, что существующий объект аналогичен тому, который должен быть создан.
table_name
- Имя создаваемой внешней таблицы (может быть указано вместе со схемой).
column_name
- Имя столбца, создаваемого в новой внешней таблице.
data_type
- Тип данных столбца, включая спецификатор массива.
NOT NULL
- В данном столбце не допускаются значения NULL.
NULL
- В данном столбце разрешены значения NULL. Это значение по умолчанию.
Этот параметр предусмотрен исключительно для совместимости с нестандартными SQL-системами. Не рекомендуется использовать его в новых приложениях.
DEFAULT default_expr
- Предложение DEFAULT задает значение по умолчанию для столбца, в котором оно определено. Это значение может быть любым неизменяемым выражением; YMatrix не позволяет использовать подзапросы и ссылки на другие столбцы текущей таблицы. Тип данных выражения по умолчанию должен соответствовать типу данных столбца.
YMatrix использует выражения по умолчанию во всех операциях вставки, в которых не указано значение для столбца. Если у столбца нет значения по умолчанию, используется значение NULL.
server_name
- Имя существующего сервера, используемого для внешних таблиц.
OPTIONS ( option 'value' [, ... ] )
- Параметры для новой внешней таблицы или одного из её столбцов. Хотя имена параметров должны быть уникальными, параметры таблицы и столбца могут иметь одинаковые имена. Имена и значения параметров зависят от конкретного внешнего обработчика данных. YMatrix использует функцию-валидатор validator_function внешнего обработчика данных для проверки параметров и их значений.
mpp_execute { 'master' | 'any' | 'all segments' }
- Параметр, определяющий хост, с которого внешний обработчик данных запрашивает данные:
- master (значение по умолчанию) — Запрашивать данные с хоста master.
- any — Запрашивать данные с хоста master или любого сегмента, в зависимости от того, какой путь является менее затратным.
- all segments — Запрашивать данные со всех сегментов. Для поддержки этого значения внешний обработчик данных должен иметь политику, связывающую сегмент с данными.
- Использование параметра mpp_execute для внешних таблиц и поддерживаемые схемы зависят от конкретного внешнего обработчика данных.
Пример
Создание внешней таблицы с именем films с использованием сервера film_server:
CREATE FOREIGN TABLE films (
code char(5) NOT NULL,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10),
len interval hour to minute
)
SERVER film_server;
Совместимость
CREATE FOREIGN TABLE в целом соответствует стандарту SQL; однако, как и CREATE TABLE, YMatrix допускает ограничения NULL и внешние таблицы без столбцов. Возможность задания значений по умолчанию является расширением YMatrix, равно как и параметр mpp_execute.
Смотрите также
ALTER FOREIGN TABLE, DROP FOREIGN TABLE, ALTER TABLE