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

ALTER FOREIGN TABLE

Изменяет определение сторонней таблицы.

Синтаксис

ALTER FOREIGN TABLE [ IF EXISTS ] <name>
    <action> [, ... ]

ALTER FOREIGN TABLE [ IF EXISTS ] <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>

где action может быть следующим:

    ADD [ COLUMN ] <column_name> <column_type> [ COLLATE <collation> ] [ <column_constraint> [ ... ] ]
    DROP [ COLUMN ] [ IF EXISTS ] <column_name> [ RESTRICT | CASCADE ]
    ALTER [ COLUMN ] <column_name> [ SET DATA ] TYPE <data_type>
    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> OPTIONS ( [ ADD | SET | DROP ] <option> ['<value>'] [, ... ])
    DISABLE TRIGGER [ <trigger_name> | ALL | USER ]
    ENABLE TRIGGER [ <trigger_name> | ALL | USER ]
    ENABLE REPLICA TRIGGER <trigger_name>
    ENABLE ALWAYS TRIGGER <trigger_name>
    OWNER TO <new_owner>
    OPTIONS ( [ ADD | SET | DROP ] <option> ['<value>'] [, ... ] )

Описание

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

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

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

  • IF EXISTS — не завершать действие ошибкой, если сторонняя таблица не существует. В этом случае будет показано уведомление.

  • SET DATA TYPE — эта форма меняет тип столбца сторонней таблицы.

  • SET/DROP DEFAULT — эти формы устанавливают или удаляют значение по умолчанию для столбца. Значения по умолчанию применяются только в последующих командах INSERT или UPDATE; они не приводят к изменению строк, уже находящихся в таблице.

  • SET/DROP NOT NULL — помечает столбец как допускающий или не допускающий значения NULL.

  • SET STATISTICS — эта форма устанавливает цель сбора статистики по столбцу для последующих операций ANALYZE. См. аналогичную форму ALTER TABLE для получения более подробной информации.

  • SET ( <attribute_option> = <value> [, …​ ] ) / RESET ( <attribute_option> [, …​ ] ) — эта форма устанавливает или сбрасывает опции для атрибута. См. аналогичную форму ALTER TABLE для получения более подробной информации.

  • DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER — эти формы настраивают срабатывание триггеров, принадлежащего сторонней таблице. См. аналогичную форму ALTER TABLE для получения более подробной информации.

  • OWNER — эта форма меняет владельца сторонней таблицы на указанного пользователя.

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

  • SET SCHEMA — эта форма перемещает стороннюю таблицу в другую схему.

  • OPTIONS ( [ ADD | SET | DROP ] <option> ['<value>'] [, …​ ] ) — изменяет опции для сторонней таблицы или одного из ее столбцов. Операции ADD, SET и DROP указывают выполняемое действие. Если операция явно не указана, предполагается ADD. Дублирование имен опций не допускается (хотя допустимо, чтобы опция таблицы и опция столбца имели одно и то же имя). Имена и значения опций также проверяются с использованием библиотеки обертки сторонних данных.

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

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

Параметры

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

name

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

column_name

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

new_column_name

Новое имя для существующего столбца

new_name

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

data_type

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

CASCADE

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

RESTRICT

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

trigger_name

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

ALL

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

USER

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

new_owner

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

new_schema

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

Примечания

Ключевое слово COLUMN не несет смысловой нагрузки и может быть опущено.

Согласованность со сторонним сервером не проверяется при добавлении или удалении столбца с помощью ADD COLUMN или DROP COLUMN, добавлении ограничения NOT NULL или изменении типа столбца с помощью 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 'value3');

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

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

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

См. также