×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.11. ALTER FOREIGN TABLE

6.1.11. 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

где action может быть одним из:

    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 | DEFAULT }
    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

Эта форма изменяет тип столбца внешней таблицы. Опять же, это не влияет на какое-либо базовое хранилище: это действие просто изменяет тип, который, по мнению Digital Q.DataBase, имеет столбец.

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 в новой схеме. Чтобы изменить владельца, вы должны иметь возможность выполнить SET ROLE для новой роли-владельца, и эта роль должна иметь право CREATE в схеме таблицы. (Эти ограничения гарантируют, что изменение владельца не позволит сделать ничего такого, что нельзя было бы сделать удалением и повторным созданием таблицы. Однако суперпользователь может изменить владельца любой таблицы в любом случае.) Чтобы добавить столбец или изменить тип столбца, вы также должны иметь право USAGE на тип данных.

Параметры

name

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

column_name

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

new_column_name

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

new_name

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

data_type

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

table_constraint

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

constraint_name

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

CASCADE

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

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. Остальные формы являются расширениями Digital Q.DataBase стандарта SQL. Кроме того, возможность указывать более одного изменения в одной команде ALTER FOREIGN TABLE является расширением.

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

Смотрите также

CREATE FOREIGN TABLE, DROP FOREIGN TABLE
Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению