ALTER FOREIGN TABLE#

ALTER FOREIGN TABLE

ALTER FOREIGN TABLE

ALTER FOREIGN TABLE — изменить определение внешней таблицы

Синтаксис

ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    action [, ... ]
ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column_name TO new_column_name
ALTER FOREIGN TABLE [ IF EXISTS ] name
    RENAME TO new_name
ALTER FOREIGN TABLE [ IF EXISTS ] name
    SET SCHEMA new_schema

where action is one of:

    ADD [ COLUMN ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
    DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
    ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ]
    ALTER [ COLUMN ] column_name SET DEFAULT expression
    ALTER [ COLUMN ] column_name DROP DEFAULT
    ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
    ALTER [ COLUMN ] column_name SET STATISTICS integer
    ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
    ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
    ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
    ALTER [ COLUMN ] column_name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
    ADD table_constraint [ NOT VALID ]
    VALIDATE CONSTRAINT constraint_name
    DROP CONSTRAINT [ IF EXISTS ]  constraint_name [ RESTRICT | CASCADE ]
    DISABLE TRIGGER [ trigger_name | ALL | USER ]
    ENABLE TRIGGER [ trigger_name | ALL | USER ]
    ENABLE REPLICA TRIGGER trigger_name
    ENABLE ALWAYS TRIGGER trigger_name
    SET WITHOUT OIDS
    INHERIT parent_table
    NO INHERIT parent_table
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])

Описание

ALTER FOREIGN TABLE изменяет определение существующей внешней таблицы. Существует несколько подформ:

ADD COLUMN

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

DROP COLUMN [ IF EXISTS ]

Эта форма удаляет столбец из внешней таблицы. Вам нужно указать CASCADE, если что-то за пределами таблицы зависит от столбца; например, представления. Если указано IF EXISTS и столбец не существует, ошибка не возникает. В этом случае будет выдано уведомление.

SET DATA TYPE

Эта форма изменяет тип столбца внешней таблицы. Опять же, это не влияет на какое-либо базовое хранилище: эта операция просто изменяет тип столбца, который Tantor SE считает у столбца.

SET/DROP DEFAULT

Эти формы устанавливают или удаляют значение по умолчанию для столбца. Значения по умолчанию применяются только в последующих командах INSERT или UPDATE; они не приводят к изменению уже существующих строк в таблице.

SET/DROP NOT NULL

Отметьте столбец как разрешающий или не разрешающий значения NULL.

SET STATISTICS

Эта форма устанавливает цель сбора статистики для каждого столбца для последующих операций ANALYZE. Для получения дополнительной информации см. аналогичную форму ALTER TABLE .

SET ( attribute_option = value [, ... ] )
RESET ( attribute_option [, ... ] )

Эта форма устанавливает или сбрасывает опции для каждого атрибута. См. аналогичную форму ALTER TABLE для получения более подробной информации.

SET STORAGE

Эта форма устанавливает режим хранения для столбца. См. аналогичную форму ALTER TABLE для получения более подробной информации. Обратите внимание, что режим хранения не имеет эффекта, если обертка внешних данных таблицы решит обратить на него внимание.

ADD table_constraint [ NOT VALID ]

Эта форма добавляет новое ограничение к внешней таблице, используя тот же синтаксис, что и CREATE FOREIGN TABLE. В настоящее время поддерживаются только ограничения CHECK.

В отличие от случая добавления ограничения к обычной таблице, ничего не делается для проверки правильности ограничения; вместо этого это действие просто объявляет, что некое новое условие должно считаться верным для всех строк во внешней таблице. (См. обсуждение в CREATE FOREIGN TABLE). Если ограничение помечено как NOT VALID, то оно не считается верным, а только записывается для возможного будущего использования.

VALIDATE CONSTRAINT

Эта форма помечает как допустимое ограничение, которое ранее было помечено как NOT VALID. Никаких действий не предпринимается для проверки ограничения, но будущие запросы будут предполагать, что оно выполняется.

DROP CONSTRAINT [ IF EXISTS ]

Эта форма удаляет указанное ограничение на внешнюю таблицу. Если указано IF EXISTS и ограничение не существует, ошибка не возникает. В этом случае вместо этого выдается уведомление.

DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER

Эти формы настраивают срабатывание триггеров, принадлежащих внешней таблице. См. аналогичную форму ALTER TABLE для получения более подробной информации.

SET WITHOUT OIDS

Синтаксис обратной совместимости для удаления системного столбца oid. Поскольку системные столбцы oid больше нельзя добавлять, это никогда не имеет эффекта.

INHERIT parent_table

Эта форма добавляет целевую внешнюю таблицу в качестве нового дочернего элемента указанной родительской таблицы. См. аналогичную форму ALTER TABLE для получения более подробной информации.

NO INHERIT parent_table

Эта форма удаляет целевую внешнюю таблицу из списка дочерних таблиц указанной родительской таблицы.

OWNER

Эта форма изменяет владельца внешней таблицы на указанного пользователя.

OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )

Измените параметры для внешней таблицы или одного из ее столбцов. ADD, SET и DROP указывают действие, которое должно быть выполнено. Если явно не указана операция, предполагается ADD. Дублирование имен параметров не допускается (хотя для параметра таблицы и параметра столбца допускается наличие одного и того же имени). Имена параметров и их значения также проверяются с использованием библиотеки внешнего обработчика данных.

RENAME

Формы RENAME изменяют имя внешней таблицы или имя отдельного столбца во внешней таблице.

SET SCHEMA

Эта форма перемещает внешнюю таблицу в другую схему.

Все действия, кроме RENAME и SET SCHEMA, могут быть объединены в список нескольких изменений, которые будут применяться параллельно. Например, возможно добавить несколько столбцов и/или изменить тип нескольких столбцов в одной команде.

Если команда записана как ALTER FOREIGN TABLE IF EXISTS ... и внешняя таблица не существует, то ошибка не возникает. В этом случае выдается уведомление.

Вы должны быть владельцем таблицы, чтобы использовать ALTER FOREIGN TABLE. Чтобы изменить схему внешней таблицы, вам также необходимо иметь привилегию CREATE на новую схему. Чтобы изменить владельца, вы также должны быть прямым или косвенным членом новой роли-владельца, и у этой роли должна быть привилегия CREATE на схему таблицы. (Эти ограничения обеспечивают, что изменение владельца не делает ничего, что вы не могли бы сделать, удалив и создав таблицу заново. Однако суперпользователь может изменять владельца любой таблицы в любом случае). Чтобы добавить столбец или изменить тип столбца, вам также необходимо иметь привилегию USAGE на тип данных.

Параметры

name

Имя (возможно, с указанием схемы) существующей внешней таблицы для изменения. Если перед именем таблицы указано ONLY, изменяется только эта таблица. Если ONLY не указано, изменяется таблица и все ее потомки (если они есть). При необходимости после имени таблицы можно явно указать *, чтобы указать, что включены потомки таблицы.

column_name

Имя нового или существующего столбца.

new_column_name

Новое имя для существующей колонки.

new_name

Новое имя для таблицы.

data_type

Тип данных нового столбца или новый тип данных для существующего столбца.

table_constraint

Новое ограничение таблицы для внешней таблицы.

constraint_name

Имя существующего ограничения для удаления.

CASCADE

Автоматически удалять объекты, зависящие от удаленного столбца или ограничения (например, представления, ссылающиеся на столбец), а также все объекты, зависящие от этих объектов (см. Раздел 5.14).

RESTRICT

Отказаться от удаления столбца или ограничения, если есть зависимые объекты. Это поведение по умолчанию.

trigger_name

Имя одного триггера для отключения или включения.

ALL

Отключить или включить все триггеры, принадлежащие внешней таблице. (Для этого требуется привилегия суперпользователя, если какие-либо из триггеров являются внутренними триггерами. Ядро системы не добавляет такие триггеры к внешним таблицам, но дополнительный код может это сделать).

USER

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

parent_table

Родительская таблица для связи или разрыва связи с этой внешней таблицей.

new_owner

Имя пользователя нового владельца таблицы.

new_schema

Имя схемы, в которую будет перемещена таблица.

Примечания

Ключевое слово COLUMN является шумом и можно опустить.

Соответствие с внешним сервером не проверяется при добавлении или удалении столбца с помощью ADD COLUMN или DROP COLUMN, при добавлении ограничения NOT NULL или CHECK, или при изменении типа столбца с помощью SET DATA TYPE. Пользователь несет ответственность за то, чтобы определение таблицы соответствовало удаленной стороне.

Ссылка на CREATE FOREIGN TABLE содержит дополнительное описание допустимых параметров.

Примеры

Чтобы пометить столбец как обязательный (not-null):

ALTER FOREIGN TABLE distributors ALTER COLUMN street SET NOT NULL;

Для изменения параметров внешней таблицы:

ALTER FOREIGN TABLE myschema.distributors OPTIONS (ADD opt1 'value', SET opt2 'value2', DROP opt3);

Совместимость

Формы ADD, DROP и SET DATA TYPE соответствуют стандарту SQL. Другие формы являются расширениями Tantor SE стандарта SQL. Также, возможность указывать несколько операций в одной команде ALTER FOREIGN TABLE является расширением.

ALTER FOREIGN TABLE DROP COLUMN может быть использовано для удаления единственного столбца внешней таблицы, оставляя таблицу без столбцов. Это расширение SQL, которое запрещает внешние таблицы без столбцов.