更新时间:2026-10-21 GMT+08:00
分享

ALTER SERVER

功能描述

增加、修改和删除指定服务器的参数,可以从pg_foreign_server系统表中查询已有的服务器。

注意事项

  • 只有SERVER的所有者或者被授予了SERVER的ALTER权限的用户才可以执行ALTER SERVER命令,系统管理员默认拥有该权限。但要修改SERVER的所有者,当前用户必须是该SERVER的所有者或者系统管理员,且该用户是新所有者角色的成员。
  • OPTIONS中的敏感字段(如password、secret_access_key)在使用多层引号时,语义和不带引号的场景是不同的,因此不会被识别为敏感字段进行脱敏。

语法格式

  • 修改外部服务的参数
    1
    2
    ALTER SERVER server_name [ VERSION 'new_version' ]
        [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ];
    

    在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数。

  • 修改外部服务的所有者
    1
    2
    ALTER SERVER server_name 
        OWNER TO new_owner;
    

  • 修改外部服务的名称
    1
    2
    ALTER SERVER server_name 
        RENAME TO new_name;
    

参数说明

  • server_name

    需要修改的外部服务器的名称。

  • new_version

    修改后,外部服务器的新版本名称。

  • OPTIONS

    更改该服务器的选项,选项名需满足唯一约束。ADD、SET和DROP为指定执行的动作,如果未指定,默认为ADD。名称和值也会使用该服务器的外部数据封装器库进行验证。

    除了libpq支持的连接参数外,还额外提供以下参数:
    • fdw_startup_cost

      执行一个外表扫描时的启动耗时估算。该值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为100,取值范围为大于0的实数。

    • fdw_tuple_cost

      在远端服务器上对每一个元组进行扫描时的额外消耗。该值通常表示数据在server间传输的额外消耗。默认值为0.01,取值范围为大于0的实数。

  • new_owner

    修改后服务器的新拥有者。

    更改服务器的所有者,当前用户必须是外部服务器的所有者并且也是新的所有者角色的直接或者间接成员,并且该用户须对外部服务器的外部数据封装器有USAGE权限。

  • new_name

    修改后服务器的新名称。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--创建my_server。
gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw;

--修改外部服务器的名称。
gaussdb=# ALTER SERVER my_server RENAME TO my_server_1;

--创建用户。
gaussdb=# CREATE USER jack PASSWORD '********';

--修改外部服务器的所有者。
gaussdb=# ALTER SERVER my_server_1 OWNER TO jack;

--增加外部服务器中dbname、dbuser信息。
gaussdb=# ALTER SERVER my_server_1 OPTIONS(ADD dbname 'test',dbuser' test_user');

--查询外部服务器信息。
gaussdb=# SELECT * FROM pg_foreign_server WHERE srvname='my_server_1';
   srvname   | srvowner | srvfdw | srvtype | srvversion | srvacl |           srvoptions           
-------------+----------+--------+---------+------------+--------+--------------------------------
 my_server_1 |    22060 |  11826 |         |            |        | {dbname=test,"dbuser= test_user"}
(1 row)

--修改外部服务器中dbname名称为‘db_test’。
gaussdb=# ALTER SERVER my_server_1 OPTIONS (SET dbname 'db_test');

--查询外部服务器信息。
gaussdb=# SELECT srvname,srvoptions FROM pg_foreign_server WHERE srvname='my_server_1';
   srvname   |            srvoptions             
-------------+-----------------------------------
 my_server_1 | {dbname=db_test,"dbuser= test_user"}
(1 row)

--删除外部服务器中dbname信息。
gaussdb=# ALTER SERVER my_server_1 OPTIONS (DROP dbname);

--查询外部服务器信息。
gaussdb=# SELECT srvname,srvoptions FROM pg_foreign_server WHERE srvname='my_server_1';
   srvname   |     srvoptions     
-------------+--------------------
 my_server_1 | {"dbuser= test_user"}
(1 row)

--删除my_server_1。
gaussdb=# DROP SERVER my_server_1;

--删除用户。
gaussdb=# DROP USER jack;

相关链接

CREATE SERVER,DROP SERVER

相关文档