ALTER FOREIGN TABLE
Синтаксис
ALTER FOREIGN TABLE [ IF EXISTS ] имя
действие [, ... ]
ALTER FOREIGN TABLE [ IF EXISTS ] имя
RENAME [ COLUMN ] имя_колонки TO новое_имя_колонки
ALTER FOREIGN TABLE [ IF EXISTS ] имя
RENAME TO новое_имя
ALTER FOREIGN TABLE [ IF EXISTS ] имя
SET SCHEMA новая_схема
Где возможные варианты действие:
ADD [ COLUMN ] имя_колонки тип_данных [ COLLATE правило_сортировки ] [ ограничение_колонки [ ... ] ]
DROP [ COLUMN ] [ IF EXISTS ] имя_колонки [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] имя_колонки [ SET DATA ] TYPE тип_данных
ALTER [ COLUMN ] имя_колонки SET DEFAULT выражение
ALTER [ COLUMN ] имя_колонки DROP DEFAULT
ALTER [ COLUMN ] имя_колонки { SET | DROP } NOT NULL
ALTER [ COLUMN ] имя_колонки SET STATISTICS integer
ALTER [ COLUMN ] имя_колонки SET ( атрибут = значение [, ... ] )
ALTER [ COLUMN ] имя_колонки RESET ( атрибут [, ... ] )
ALTER [ COLUMN ] имя_колонки OPTIONS ( [ ADD | SET | DROP ] параметр ['значение'] [, ... ])
DISABLE TRIGGER [ имя_триггера | ALL | USER ]
ENABLE TRIGGER [ имя_триггера | ALL | USER ]
ENABLE REPLICA TRIGGER имя_триггера
ENABLE ALWAYS TRIGGER имя_триггера
OWNER TO новый_владелец
OPTIONS ( [ ADD | SET | DROP ] параметр ['значение'] [, ... ])
Описание
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 ( атрибут = значение [, ... ] )
RESET ( атрибут [, ... ] ) Эта форма задаёт или сбрасывает значения атрибутов. За подробностями обратитесь к описанию подобной формы ALTER TABLE.
- DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER
Эти формы управляют триггерами, принадлежащими сторонней таблице. За подробностями обратитесь к описанию подобной формы ALTER TABLE.
- OWNER
Эта форма меняет владельца сторонней таблицы на заданного пользователя.
- RENAME
Формы RENAME меняют имя сторонней таблицы или имя колонки в сторонней таблице.
- SET SCHEMA
Эта форма переносит стороннюю таблицу в другую схему.
- OPTIONS ( [ ADD | SET | DROP ] параметр ['значение'] [, ... ] )
Эта форма настраивает параметры сторонней таблицы или одной из её колонок. ADD, SET и DROP определяют, какое действие будет выполнено (добавление, установка и удаление, соответственно). Если действие не задано явно, подразумевается ADD. Имена параметров не должны повторяться (хотя параметр таблицы и параметр колонки вполне могут иметь одно имя). Имена и значения параметров также проверяются библиотекой обёртки сторонних данных.
Все действия, кроме RENAME и SET SCHEMA, можно объединить в один список изменений и выполнить одновременно. Например, можно добавить несколько колонок и/или изменить тип колонок одной командой.
Выполнить ALTER FOREIGN TABLE может только владелец соответствующей таблицы. Чтобы сменить схему сторонней таблицы, необходимо также иметь право CREATE в новой схеме. Чтобы сменить владельца, необходимо быть непосредственным или опосредованным членом новой роли-владельца, а эта роль должна иметь право CREATE в схеме таблицы. (С такими ограничениями при смене владельца не происходит ничего такого, что нельзя было бы сделать, имея право удалить и вновь создать таблицу. Однако суперпользователь может сменить владельца таблицы в любом случае.) Чтобы добавить колонку или изменить тип колонки, ещё требуется иметь право USAGE для её типа данных.
Параметры
- имя
Имя (возможно, дополненное схемой) существующей сторонней таблицы, подлежащей изменению.
- имя_колонки
Имя новой или существующей колонки.
- новое_имя_колонки
Новое имя существующей колонки.
- новое_имя
Новое имя таблицы.
- тип_данных
Тип данных новой колонки или новый тип данных существующей колонки.
- CASCADE
Автоматически удалять объекты, зависящие от удаляемой колонки (например, представления, содержащие эту колонку).
- RESTRICT
Отказать в удалении колонки, если существуют зависящие от неё объекты. Это поведение по умолчанию.
- имя_триггера
Имя включаемого или отключаемого триггера.
- ALL
Отключает или включает все триггеры, принадлежащие сторонней таблице. (Если какие-либо из триггеров являются внутрисистемными, для этого требуются права суперпользователя. Сама система не добавляет такие триггеры в сторонние таблицы, но дополнительный код может сделать это.)
- USER
Отключает или включает все триггеры, принадлежащие сторонней таблице, кроме сгенерированных внутрисистемных.
- новый_владелец
Имя пользователя, назначаемого новым владельцем таблицы.
- новая_схема
Имя схемы, в которую будет перемещена таблица.
Замечания
Ключевое слово 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. Другие формы являются собственными расширениями PostgreSQL. Кроме того, возможность указать в одной команде ALTER FOREIGN TABLE несколько операций так же является расширением.
ALTER FOREIGN TABLE DROP COLUMN позволяет удалить единственную колонку сторонней таблицы и оставить таблицу без колонок. Это является расширением стандарта SQL, который не допускает существование сторонних таблиц с нулём колонок.
Пред. | Начало | След. |
ALTER FOREIGN DATA WRAPPER | Уровень выше | ALTER FUNCTION |