POSTGRES - 丢失外部数据的风险 wrapper/schema

POSTGRES - Risk of dropping foreign data wrapper/schema

我们让其中一位开发人员使用这些命令创建了一个外部数据包装器:

CREATE SERVER serverName FOREIGN DATA WRAPPER postgres_fdw OPTIONS (xxxx);
CREATE USER MAPPING FOR user SERVER foreign_db OPTIONS (user 'xxxx', password 'xxxx');
CREATE SCHEMA foreign_db;
IMPORT FOREIGN SCHEMA public FROM SERVER serverName INTO foreign_db;

要删除此架构,建议 运行:

DROP SCHEMA if exists foreign_db cascade;
DROP USER mapping if exists for user server foreign_db;
DROP SERVER if exists serverName;

在 CASCADE 的规范中我看到了这个:

Automatically drop objects (tables, functions, etc.) that are contained in the schema, and in turn all objects that depend on those objects

我关心的是这一行:

and in turn all objects that depend on those objects 

我的问题是有可能删除 foreign_db 架构之外的任何内容,如果是,我该如何检查?

谢谢。

该命令可能会在架构之外删除 某些内容。考虑一下:

create schema example;
create table example.my_table (id int);
create view public.my_view as select * from example.my_table;

如果使用级联选项删除模式,public.my_view 也将被删除。但是,这种行为是合乎逻辑且合乎需要的。

你可以检查这个一个一个执行这些命令:

begin;
drop schema example cascade;
rollback;

架构不会被删除,在 drop... 之后你应该得到这样的东西:

NOTICE:  drop cascades to 2 other objects
DETAIL:  drop cascades to table example.my_tabledrop cascades to view my_view

或者,您可以使用系统目录 pg_depend,请参阅此答案