CREATE FOREIGN TABLE

Название

CREATE FOREIGN TABLE -- создать стороннюю таблицу

Синтаксис

CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
    имя_колонки тип_данных [ OPTIONS ( параметр 'значение' [, ... ] ) ] [ COLLATE правило_сортировки ] [ ограничение_колонки [ ... ] ]
    [, ... ]
] )
  SERVER имя_сервера
[ OPTIONS ( параметр 'значение' [, ... ] ) ]

Здесь ограничение_колонки:

[ CONSTRAINT имя_ограничения ]
{ NOT NULL |
  NULL |
  DEFAULT выражение_по_умолчанию }

Описание

CREATE FOREIGN TABLE создаёт новую стороннюю таблицу в текущей базе данных. Владельцем таблицы будет пользователь, выполнивший эту команду.

Если указано имя схемы (например, CREATE FOREIGN TABLE myschema.mytable ...), таблица будет создана в этой схеме. В противном случае она создаётся в текущей схеме. Имя сторонней таблицы должно отличаться от имён других сторонних и обычных таблиц, последовательностей, индексов, представлений и материализованных представлений, существующих в этой схеме.

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

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

Параметры

IF NOT EXISTS

Не считать ошибкой, если отношение с таким именем уже существует. В этом случае будет выдано замечание. Заметьте, что нет никакой гарантии, что существующее отношение как-то соотносится с тем, которое могло бы быть создано.

table_name

Имя (возможно, дополненное схемой) создаваемой таблицы.

имя_колонки

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

тип_данных

Тип данных колонки (может включать определение массива с этим типом). За дополнительными сведениями о типах данных, которые поддерживает PostgreSQL, обратитесь к Главе 8.

NOT NULL

Данная колонка не принимает значения NULL.

NULL

Данная колонка может содержать значения NULL (по умолчанию).

Это предложение предназначено только для совместимости с нестандартными базами данных SQL. Использовать его в новых приложениях не рекомендуется.

DEFAULT выражение_по_умолчанию

Предложение DEFAULT задаёт значение по умолчанию для колонки, в определении которой оно присутствует. Значение задаётся выражением без переменных (подзапросы и перекрёстные ссылки на другие колонки текущей таблицы в нём не допускаются). Тип данных выражения, задающего значение по умолчанию, должен соответствовать типу данных колонки.

Это выражение будет использоваться во всех операциях добавления данных, в которых не задаётся значение данной колонки. Если значение по умолчанию не определено, таким значением будет NULL.

имя_сервера

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

OPTIONS ( параметр 'значение' [, ...] )

Параметры, связываемые с новой сторонней таблицей или одной из её колонок. Допустимые имена и значения параметров у каждой обёртки сторонних данных свои; они контролируются функцией проверки, связанной с этой обёрткой. Имена параметров не должны повторяться (хотя параметр таблицы и параметр колонки вполне могут иметь одно имя).

Примеры

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