Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

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 …​), Greengage DB создает таблицу в указанной схеме. В противном случае сторонняя таблица создается в текущей схеме. Имя сторонней таблицы должно отличаться от имен любых других сторонних таблиц, обычных таблиц, последовательностей, индексов или представлений в той же схеме.

Так как CREATE FOREIGN TABLE автоматически создает тип данных, представляющий составной тип, соответствующий одной строке сторонней таблицы, сторонние таблицы не могут иметь то же имя, что и любой существующий тип данных в той же схеме.

Чтобы создать стороннюю таблицу, необходимо иметь привилегию USAGE на сторонний сервер, а также привилегию USAGE на все типы столбцов, используемые в таблице.

Параметры

Параметр Описание

IF NOT EXISTS

Не выдавать ошибку, если отношение с таким именем уже существует. В этом случае Greengage DB выводит уведомление. При этом нет гарантии, что существующее отношение похоже на то, которое было бы создано

table_name

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

column_name

Имя столбца, создаваемого в новой сторонней таблице

data_type

Тип данных столбца, включая спецификаторы массивов

NOT NULL

В столбце запрещены значения NULL

NULL

В столбце разрешены значения NULL. Это значение по умолчанию. Этот вариант предусмотрен только для совместимости с нестандартными SQL-базами данных. Использование в новых приложениях не рекомендуется

DEFAULT <default_expr>

Выражение DEFAULT задает значение по умолчанию для столбца, в определении которого оно указано. Значение представляет собой выражение без переменных. Greengage DB не допускает подзапросы и перекрестные ссылки на другие столбцы текущей таблицы. Тип данных выражения по умолчанию должен совпадать с типом данных столбца. Greengage DB использует выражение по умолчанию при любой операции вставки, в которой не задано значение для столбца. Если для столбца значение по умолчанию не задано, по умолчанию используется NULL

server_name

Имя существующего сервера, который будет использован для сторонней таблицы. Подробнее об определении сервера см. CREATE SERVER

OPTIONS ( <option> '<value>' [, …​ ] )

Параметры для новой сторонней таблицы или одного из ее столбцов. Хотя имена параметров должны быть уникальными, параметр таблицы и параметр столбца могут иметь одинаковое имя. Имена и значения параметров зависят от обертки сторонних данных (foreign data wrapper). Greengage DB проверяет параметры и значения с помощью параметра <validator_function> обертки сторонних данных

mpp_execute { 'master' | 'any' | 'all segments' }

Специфичный для Greengage DB параметр, который определяет хост, с которого обертка сторонних данных читает или записывает данные:

  • master (значение по умолчанию) — читать или записывать данные с мастер-хоста.

  • any — читать данные либо с мастер-хоста, либо с одного сегмента, в зависимости от того, какой путь дешевле.

  • all segments — читать или записывать данные со всех сегментов. Чтобы поддерживать это значение, обертка сторонних данных должна иметь политику, сопоставляющую сегменты с данными.

    ПРИМЕЧАНИЕ

    Greengage DB поддерживает параллельную запись в сторонние таблицы только при mpp_execute 'all segments'.

Поддержка параметра mpp_execute для сторонней таблицы и конкретных режимов зависит от обертки сторонних данных. Параметр mpp_execute можно указывать в нескольких командах: CREATE FOREIGN TABLE, CREATE SERVER и CREATE FOREIGN DATA WRAPPER. Настройка сторонней таблицы имеет приоритет над настройкой стороннего сервера, которая, в свою очередь, имеет приоритет над настройкой обертки сторонних данных

Примечания

Планировщик запросов GPORCA не поддерживает сторонние таблицы. Запрос к сторонней таблице всегда выполняется с откатом на планировщик Postgres.

Примеры

Создать стороннюю таблицу 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, Greengage DB допускает ограничения NULL и сторонние таблицы без столбцов. Возможность задавать значение по умолчанию является расширением Greengage DB, как и параметр mpp_execute.

См. также