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