Могу ли я изменить 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 и вызовет множество проблем позже.