ALTER SCHEMA
功能描述
修改模式属性。
注意事项
- 只有模式的所有者或者被授予了模式ALTER权限的用户,有权限执行ALTER SCHEMA命令,系统管理员默认拥有此权限。
- 非系统管理员要修改模式的所有者或模式的永久表存储空间上限,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。
语法格式
- 修改模式的名称。
1 2
ALTER SCHEMA schema_name RENAME TO new_name;
- 修改模式的所有者。
1 2
ALTER SCHEMA schema_name OWNER TO new_owner;
- 修改模式的永久表存储空间限制。
1 2
ALTER SCHEMA schema_name WITH PERM SPACE 'space_limit';
参数说明
| 参数 | 描述 | 取值范围 |
|---|---|---|
| schema_name | 需要修改的模式名称。 | 已存在的模式名。 |
| new_name | 模式的新名称。 | 字符串,需符合标识符命名规范。 |
| new_owner | 模式的新所有者。 | 已存在的用户名/角色名。 |
| WITH PERM SPACE 'space_limit' | 模式的永久表存储空间上限。 | 字符串格式为正整数+单位,单位当前支持K/M/G/T/P。解析后的数值以K为单位,且范围不能够超过64比特表示的有符号整数,即1KB~9007199254740991KB。 |
示例
创建示例模式schema_test和用户user_a:
1 2 | CREATE SCHEMA schema_test; CREATE USER user_a PASSWORD '{Password}'; |
将当前模式schema_test更名为schema_test1:
1 | ALTER SCHEMA schema_test RENAME TO schema_test1; |
将schema_test1的所有者修改为user_a:
1 | ALTER SCHEMA schema_test1 OWNER TO user_a; |
示例:创建一个设置了永久存储空间的Schema
以下模拟一个示例,创建一个名为testsche的schema,并设置永久存储空间为10MB,当数据超过该设置值,系统报错。
除了通过SQL语句设置永久存储空间之外,您也可以通过控制台界面进行Schema永久存储空间设置,详情参见配置DWS数据库的Schema存储空间章节。
- 创建一个名为testsche的schema,并设置永久存储空间为10MB。
1CREATE SCHEMA testsche WITH PERM SPACE '10M';
- 使用系统表PG_NAMESPACE查询Schema的表存储间大小,其中permspace为永久存储空间限额,usedspace为已使用永久存储空间大小。
1SELECT permspace,usedspace FROM PG_NAMESPACE WHERE nspname = 'testsche';

- 创建一张测试表,并导入数据。
1 2 3
CREATE TABLE testsche.src AS SELECT 1; CREATE TABLE testsche.t1(a int, b numeric(15,2)) WITH(orientation=column); INSERT INTO testsche.t1 SELECT generate_series(1,20000000) % 1000,generate_series(1,20000000) FROM testsche.src;
回显报错信息,超过该schema的永久存储空间大小。

- 调大Schema的永久存储空间大小为10GB,再次导入,显示成功。
1 2
ALTER SCHEMA testsche WITH PERM SPACE '10G'; INSERT INTO testsche.t1 SELECT generate_series(1,20000000) % 1000,generate_series(1,20000000) FROM testsche.src;

- 查看已用空间。
1SELECT permspace,usedspace FROM PG_NAMESPACE WHERE nspname = 'testsche';
