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

Действия следующие:

    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 и отсутствии указанного столбца база данных YMatrix выдаст предупреждение вместо ошибки.

IF EXISTS

  • Если указано ключевое слово IF EXISTS, а внешняя таблица не существует, база данных YMatrix выдаст только предупреждение, а не ошибку.

SET DATA TYPE

  • Изменяет тип данных столбца во внешней таблице.

SET/DROP DEFAULT

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

SET/DROP NOT NULL

  • Указывает, разрешены ли в столбце значения NULL.

SET STATISTICS

  • Устанавливает целевой уровень сбора статистики для каждого столбца при выполнении последующих операций ANALYZE.

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

  • Устанавливает или сбрасывает параметры для каждого свойства.

DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER

  • Настраивает активацию триггеров, принадлежащих внешней таблице.

OWNER

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

RENAME

  • Переименовывает внешнюю таблицу или отдельный столбец в ней.

SET SCHEMA

  • Перемещает внешнюю таблицу в другую схему.

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

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

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

Чтобы использовать операцию 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

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

Пример

Указать, что столбец не допускает 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. Остальные формы являются расширениями базы данных YMatrix по отношению к стандарту SQL. Возможность указывать несколько операций в одной команде ALTER FOREIGN TABLE также является расширением базы данных YMatrix.

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

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

CREATE FOREIGN TABLE, DROP FOREIGN TABLE, ALTER TABLE