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 меняет определение существующей сторонней таблицы. Эта команда имеет несколько разновидностей:
Эта форма добавляет в стороннюю таблицу новую колонку, следуя тому же синтаксису, что и CREATE FOREIGN TABLE. В отличие от добавления колонки в обычную таблицу, при данной операции в базовом хранилище ничего не меняется; эта команда просто объявляет о доступности новой колонки через данную стороннюю таблицу.
Эта форма удаляет колонку из сторонней таблицы. Если что-либо зависит от этой колонки, например, представление, для успешного результата потребуется добавить CASCADE. Если указано IF EXISTS и эта колонка не существует, ошибка не происходит, вместо этого выдаётся замечание.
Не считать ошибкой, если сторонняя таблица не существует. В этом случае будет выдано замечание.
Эта форма меняет тип колонки в сторонней таблице.
Эти формы задают или удаляют значение по умолчанию для колонок. Значения по умолчанию применяются только при последующих командах INSERT или UPDATE; их изменения не отражаются в строках, уже существующих в таблице.
Устанавливает, будет ли колонка принимать значения NULL или нет.
Эта форма задаёт цель сбора статистики по колонкам для последующих операций ANALYZE. За подробностями обратитесь к описанию подобной формы ALTER TABLE.
Эта форма задаёт или сбрасывает значения атрибутов. За подробностями обратитесь к описанию подобной формы ALTER TABLE.
Эти формы управляют триггерами, принадлежащими сторонней таблице. За подробностями обратитесь к описанию подобной формы ALTER TABLE.
Эта форма меняет владельца сторонней таблицы на заданного пользователя.
Формы RENAME меняют имя сторонней таблицы или имя колонки в сторонней таблице.
Эта форма переносит стороннюю таблицу в другую схему.
Эта форма настраивает параметры сторонней таблицы или одной из её колонок. ADD, SET и DROP определяют, какое действие будет выполнено (добавление, установка и удаление, соответственно). Если действие не задано явно, подразумевается ADD. Имена параметров не должны повторяться (хотя параметр таблицы и параметр колонки вполне могут иметь одно имя). Имена и значения параметров также проверяются библиотекой обёртки сторонних данных.
Все действия, кроме RENAME и SET SCHEMA, можно объединить в один список изменений и выполнить одновременно. Например, можно добавить несколько колонок и/или изменить тип колонок одной командой.
Выполнить ALTER FOREIGN TABLE может только владелец соответствующей таблицы. Чтобы сменить схему сторонней таблицы, необходимо также иметь право CREATE в новой схеме. Чтобы сменить владельца, необходимо быть непосредственным или опосредованным членом новой роли-владельца, а эта роль должна иметь право CREATE в схеме таблицы. (С такими ограничениями при смене владельца не происходит ничего такого, что нельзя было бы сделать, имея право удалить и вновь создать таблицу. Однако суперпользователь может сменить владельца таблицы в любом случае.) Чтобы добавить колонку или изменить тип колонки, ещё требуется иметь право USAGE для её типа данных.
Имя (возможно, дополненное схемой) существующей сторонней таблицы, подлежащей изменению.
Имя новой или существующей колонки.
Новое имя существующей колонки.
Новое имя таблицы.
Тип данных новой колонки или новый тип данных существующей колонки.
Автоматически удалять объекты, зависящие от удаляемой колонки (например, представления, содержащие эту колонку).
Отказать в удалении колонки, если существуют зависящие от неё объекты. Это поведение по умолчанию.
Имя включаемого или отключаемого триггера.
Отключает или включает все триггеры, принадлежащие сторонней таблице. (Если какие-либо из триггеров являются внутрисистемными, для этого требуются права суперпользователя. Сама система не добавляет такие триггеры в сторонние таблицы, но дополнительный код может сделать это.)
Отключает или включает все триггеры, принадлежащие сторонней таблице, кроме сгенерированных внутрисистемных.
Имя пользователя, назначаемого новым владельцем таблицы.
Имя схемы, в которую будет перемещена таблица.
Ключевое слово 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 |