
# ALTER SCHEMA
#### 功能描述
修改模式属性。
#### 注意事项
- 只有模式的所有者或者被授予了模式ALTER权限的用户有权限执行ALTER SCHEMA命令，系统管理员默认拥有此权限。但要修改模式的所有者，当前用户必须是该模式的所有者或者系统管理员，且该用户是新所有者角色的成员。

- 对于除public以外的系统模式，如pg_catalog、sys等，只允许初始用户修改模式的所有者。修改系统自带模式的名称可能会导致部分功能不可用甚至影响数据库正常运行，默认情况下不允许修改系统自带模式的名称，考虑到前向兼容性，仅允许当系统在启动或升级过程中或参数allow_system_table_mods为on时修改。
- 只有初始用户可以将schema的属主修改为运维管理员，其他用户无法将schema的属主修改为运维管理员。
 
#### 语法格式
- 修改模式的名称。
  ```
  ALTER SCHEMA schema_name 
      RENAME TO new_name;
  ```
  
- 修改模式的所有者。
  ```
  ALTER SCHEMA schema_name 
      OWNER TO new_owner;
  ```
  
 
#### 参数说明
- **schema_name**
  现有模式的名称。
  取值范围：已存在的模式名。
  
- **RENAME TO new_name**
  修改模式的名称。
  new_name：模式的新名称。
  ![](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  - 模式名不能和当前数据库里其他的模式重名。
  
  - 模式名不能和当前数据库的初始用户重名。
  
  - 模式的名称不可以"pg_"开头。
  
  - 模式的名称不可以"gs_role_"开头。
   
  取值范围：字符串，要符合[标识符命名规范](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0319.html#ZH-CN_TOPIC_0000002235270221__zh-cn_topic_0000002235098221_section14873217506)。
  
- **OWNER TO new_owner**
  修改模式的所有者。非系统管理员要改变模式的所有者，该用户还必须是新的所有角色的直接或间接成员， 并且该成员必须在此数据库上有CREATE权限。
  new_owner：模式的新所有者。
  取值范围：已存在的用户名/角色名。
  
 
#### 示例
```
--创建模式ds。
gaussdb=# CREATE SCHEMA ds;
--将当前模式ds更名为ds_new。
gaussdb=# ALTER SCHEMA ds RENAME TO ds_new;
--创建用户jack。
gaussdb=# CREATE USER jack PASSWORD '********';
--将DS_NEW的所有者修改为jack。
gaussdb=# ALTER SCHEMA ds_new OWNER TO jack;
--删除用户jack和模式ds_new。
gaussdb=# DROP SCHEMA ds_new;
gaussdb=# DROP USER jack;
```
#### 相关链接
[CREATE SCHEMA](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0536.html#ZH-CN_TOPIC_0000002235390389)，[DROP SCHEMA](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0583.html#ZH-CN_TOPIC_0000002200190350)
