Могу ли я изменить SERVER для чужой таблицы?

Согласно DOC я не могу этого сделать. Но полное воссоздание таблицы вынуждает меня делать огромную работу вместо простой:

ALTER FOREIGN TABLE table_name ALTER SERVER new_server_name;

3 ответа

Перечислите ваши внешние серверы данных и запишите это:

select oid, * from pg_foreign_server 

Найдите свой иностранный стол:

select oid, * from pg_class where relkind = 'f'

Затем измените системный каталог pg_foreign_table лайк:

update pg_foreign_table set ftserver = 11573931 where ftserver = 11573932 -- and ftrelid = YOUR_OID_RELID_FROM_PG_CLASS

В postgres 12 эта команда отлично работала, чтобы изменить IP-адрес сервера, который использовался для оболочки внешней БД.

      alter  server  YOUR_SERVER_NAME  options (set  host 'XX.XXX.XX.X');

Не меняйте сервер таким образом, потому что это не приведет к обновлению таблицы зависимостей pg_depend и вызовет множество проблем позже.

Другие вопросы по тегам