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> |
Выражение |
server_name |
Имя существующего сервера, который будет использован для сторонней таблицы. Подробнее об определении сервера см. CREATE SERVER |
OPTIONS ( <option> '<value>' [, … ] ) |
Параметры для новой сторонней таблицы или одного из ее столбцов.
Хотя имена параметров должны быть уникальными, параметр таблицы и параметр столбца могут иметь одинаковое имя.
Имена и значения параметров зависят от обертки сторонних данных (foreign data wrapper).
Greengage DB проверяет параметры и значения с помощью параметра |
mpp_execute { 'master' | 'any' | 'all segments' } |
Специфичный для Greengage DB параметр, который определяет хост, с которого обертка сторонних данных читает или записывает данные:
Поддержка параметра |
Примечания
Планировщик запросов 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.