功能描述
修改一个模式的参数。
语法格式
ALTER SCHEMA name RENAME TO new_name
ALTER SCHEMA name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
参数说明
- name:现有模式的名称;
- new_name:该模式的新名称,新名称不能以pg_开始;
- new_owner:该模式的新所有者。
注意事项
使用ALTER SCHEMA必须是该模式的所有者。
范例
ALTER SCHEMA gbaseschema RENAME TO gbaseschema2;
ALTER SCHEMA
语法兼容
在 SQL 标准中没有ALTER SCHEMA语句。
相关语法
功能描述
修改一个现有的序列的参数。
语法格式
ALTER SEQUENCE [ IF EXISTS ] name
[ AS data_type ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ RESTART [ [ WITH ] restart ] ]
[ CACHE cache ] [ [ NO ] CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ]
ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name
ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema
参数说明
- name:将要修改的序列的名称,可以被模式修饰;
- IF EXISTS:如果序列不存在时不报错,仅提示;
- data_type:指定序列的数据类型,取值范围:smallint、integer和bigint,缺省为bigint;
- increment:指定序列的步长。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列,缺省为1;
- minvalue | NO MINVALUE:执行序列的最小值。如果没有声明minvalue或者声明了NO MINVALUE,则递增序列的缺省值为1,递减序列的缺省值为数据类型的最小值,NOMINVALUE等价于NO;
- maxvalue | NO MAXVALUE:执行序列的最大值。如果没有声明maxvalue或者声明了NO MAXVALUE,则递增序列的缺省值为数据类型的最大值,递减序列的缺省值为-1,NOMAXVALUE等价于NO;
- start:指定序列的起始值。缺省值:对于递增序列为minvalue,递减序列为maxvalue;
- restart:RESTART [ WITH restart ]更改该序列的当前值,可选;
- cache:为了快速访问,而在内存中预先存储序列号的个数,缺省值为1,表示一次只能生成一个值,也就是没有缓存;
- CYCLE | NO CYCLE:用于使序列达到maxvalue或者minvalue后可循环并继续下去,如果声明了NO CYCLE,则在序列达到其最大值后任何对nextval的调用都会报错,缺省情况下将保留旧的循环;
- OWNED BY table_name.column_name | OWNED BY NONE:将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。关联的表和序列的所有者必须是同一个用户,并且在同一个模式中,缺省值为OWNED BY NONE,表示不存在这样的关联;
- new_owner:该序列的新所有者的名称;
- new_name:该序列的新名称;
- new_schema:该序列的新模式。
注意事项
使用ALTER SEQUENCE的用户必须是该序列的所有者。
范例
ALTER SEQUENCE serial RENAME TO g_serial;
ALTER SEQUENCE
语法兼容
ALTER SEQUENCE符合SQL 标准,不过AS、START WITH、 OWNED BY、OWNER TO、RENAME TO 以及SET SCHEMA子句是 PostgreSQL扩展。
相关语法
CREATE SEQUENCE, DROP SEQUENCE
功能描述
修改扩展统计的参数。
语法格式
ALTER STATISTICS name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER STATISTICS name RENAME TO new_name
ALTER STATISTICS name SET SCHEMA new_schema
参数说明
- name:要修改的统计对象的名称,可以被模式修饰;
- new_owner:统计对象的新所有者的名称;
- new_name:统计对象的新名称;
- new_schema:统计对象的新模式。
注意事项
要使用ALTER STATISTICS必须是统计对象的拥有者。
语法兼容
SQL标准中没有ALTER STATISTICS命令。
相关语法
CREATE STATISTICS, DROP STATISTICS
功能描述
修改一个服务器配置参数。
语法格式
ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
ALTER SYSTEM RESET configuration_parameter
ALTER SYSTEM RESET ALL
参数说明
- configuration_parameter:配置参数的名称;
- value:该参数的新值,取值范围:字符串常量、标识符、数字或由他们构成的列表。
范例
设置wal_level:
ALTER SYSTEM SET wal_level = replica;
ALTER SYSTEM
撤销以上的设置,恢复默认设置:
ALTER SYSTEM RESET wal_level;
ALTER SYSTEM
语法兼容
ALTER SYSTEM语句是一种 PostgreSQL扩展。
相关语法
功能描述
修改一个表的参数。
语法格式
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
action [, ... ]
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
RENAME [ COLUMN ] column_name TO new_column_name
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER TABLE [ IF EXISTS ] name
RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name
SET SCHEMA new_schema
ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
SET TABLESPACE new_tablespace [ NOWAIT ]
ALTER TABLE [ IF EXISTS ] name
ATTACH PARTITION partition_name FOR VALUES partition_bound_spec
ALTER TABLE [ IF EXISTS ] name
DETACH PARTITION partition_name
其中action 是以下之一:
ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ]
ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...]
ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ]
ALTER [ COLUMN ] column_name SET STATISTICS integer
ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
ADD table_constraint [ NOT VALID ]
ADD table_constraint_using_index
ALTER CONSTRAINT constraint_name [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
VALIDATE CONSTRAINT constraint_name
DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
DISABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE REPLICA TRIGGER trigger_name
ENABLE ALWAYS TRIGGER trigger_name
DISABLE RULE rewrite_rule_name
ENABLE RULE rewrite_rule_name
ENABLE REPLICA RULE rewrite_rule_name
ENABLE ALWAYS RULE rewrite_rule_name
DISABLE ROW LEVEL SECURITY
ENABLE ROW LEVEL SECURITY
FORCE ROW LEVEL SECURITY
NO FORCE ROW LEVEL SECURITY
CLUSTER ON index_name
SET WITHOUT CLUSTER
SET WITH OIDS
SET WITHOUT OIDS
SET TABLESPACE new_tablespace
SET { LOGGED | UNLOGGED }
SET ( storage_parameter = value [, ... ] )
RESET ( storage_parameter [, ... ] )
INHERIT parent_table
NO INHERIT parent_table
OF type_name
NOT OF
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING}
并且 table_constraint_using_index 是:
[ CONSTRAINT constraint_name ]
{ UNIQUE | PRIMARY KEY } USING INDEX index_name
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
参数说明
- IF EXISTS:如果表不存在不报错,仅提示;
- name:要修改的现有表的名称,可以被模式修饰;如果在表名前指定了ONLY,则仅修改该表,如果没有指定ONLY,则表及其所有后代表都会被修改;在表后面标注*可以显式地指定包括后代表;
- column_name:新列或者现有列的名称;
- new_column_name:现有列的新名称;
- new_name:该表的新名称;
- data_type:新列的数据类型或现有列的新数据类型;
- table_constraint:该表的新的表约束;
- constraint_name:新约束或者现有约束的名称;
- CASCADE:删除或更新时同时操作被引用列的值;
- RESTRICT:删除或更新将会违背外键约束时报错,不可延迟检查;
- trigger_name:将禁用或启用的触发器名称;
- ALL:禁用或者启用属于该表的所有触发器;
- USER:禁用或者启用属于该表的所有触发器,内部产生的约束触发器除外;
- index_name:现有索引的名称;
- storage_parameter:表存储参数的名称;
- value:表存储参数的新值;
- parent_table:要与这个表关联或者解除关联的父表;
- new_owner:该表的新所有者的名称;
- new_tablespace:要把该表移入其中的表空间的名称;
- new_schema:要把该表移入其中的模式的名称;
- nodename:定义数据库节点;
- groupname:定义数据库节点组;
- partition_name:要从此表中拆分出分区表的名称;
- partition_bound_spec:新分区的分区绑定规范。
其他参数参见CREATE TABLE。
注意事项
当使用ADD COLUMN增加一列时,该表中所有现在的行会被该列的默认值初始化。
ALTER TABLE更改表的不同形式,要求的锁级别可能不用,如果没有特殊说明,将会持有一个ACCESS EXCLUSIVE锁。当有多个子命令时,持有的锁将会是子命令里面最严格的。
DISTRIBUTE BY、ADD NODE、DELETE NODE、TO NODE 或 TO GROUP的ALTER TABLE子句用于在数据库集群节点之间重新分配数据,这些子句不能与其他命令一起使用。
范例
ALTER TABLE disttab ADD COLUMN c4 varchar(30);
ALTER TABLE
语法兼容
ADD(不带USING INDEX)、 DROP [COLUMN]、DROP IDENTITY、RESTART、 SET DEFAULT、SET DATA TYPE(不带USING)、 SET GENERATED和SET sequence_option 符合 SQL 标准。其他形式是PostgreSQL对 SQL 标准的 扩展。
相关语法
功能描述
修改表空间的参数。
语法格式
ALTER TABLESPACE name RENAME TO new_name
ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] )
ALTER TABLESPACE name RESET ( tablespace_option [, ... ] )
参数说明
- name:现有表空间的名称;
- new_name:该表空间的新名称,不能以pg_开始;
- new_owner:该表空间的新所有者;
- tablespace_option:要设置或者重置的表空间参数,当前可以使用seq_page_cost、random_page_cost 以及effective_io_concurrency参数;
注意事项
只有表空间的所有者有权限执行ALTER TABLESPACE命令。
范例
ALTER TABLESPACE index_space RENAME TO fast_raid;
语法兼容
在 SQL 标准中没有 ALTER TABLESPACE语句。
相关语法
CREATE TABLESPACE, DROP TABLESPACE
功能描述
修改文本搜索配置的参数。用户可以将映射从字串类型调整为字典,或者改变配置的名称或者所有者,或者修改搜索配置的配置参数。
语法格式
ALTER TEXT SEARCH CONFIGURATION name
ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING REPLACE old_dictionary WITH new_dictionary
ALTER TEXT SEARCH CONFIGURATION name
ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary
ALTER TEXT SEARCH CONFIGURATION name
DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]
ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name
ALTER TEXT SEARCH CONFIGURATION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema
参数说明
- name:现有的文本搜索配置的名称,可以被模式修饰;
- token_type:与配置的语法解析器关联的字串类型的名称;
- dictionary_name:文本搜索字典名称,如果有多个字典,则它们会按指定的顺序搜索;
- old_dictionary:映射中拟被替换的文本搜索字典名称;
- new_dictionary:替换old_dictionary的文本搜索字典的名称;
- new_name:文本搜索配置的新名称
- new_owner:文本搜索配置的新所有者;
- new_schema:文本搜索配置的新模式名。
注意事项
当一个搜索配置已经被引用(如被用来创建索引),则不允许用户修改此文本搜索配置。
要使用ALTER TEXT SEARCH CONFIGURATION,用户必须是配置的所有者。
范例
ALTER TEXT SEARCH CONFIGURATION gdt1 RENAME TO gdt2;
ALTER TEXT SEARCH CONFIGURATION
语法兼容
在 SQL 标准中没有 ALTER TEXT SEARCH CONFIGURATION 语句。
相关语法
CREATE TEXT SEARCH CONFIGURATION, DROP TEXT SEARCH CONFIGURATION
功能描述
修改全文检索词典的相关定义,包括参数、名称、所有者、以及模式等。
语法格式
ALTER TEXT SEARCH DICTIONARY name (
option [ = value ] [, ... ]
)
ALTER TEXT SEARCH DICTIONARY name RENAME TO new_name
ALTER TEXT SEARCH DICTIONARY name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER TEXT SEARCH DICTIONARY name SET SCHEMA new_schema
参数说明
- name:现有的词典的名称,可以被模式修饰;
- option:模板相关参数名;
- value:模板相关参数值;
- new_name:词典的新名称;
- new_owner:词典新的所有者;
- new_schema:词典的新模式。
范例
ALTER TEXT SEARCH DICTIONARY my_dict ( StopWords = newrussian );
语法兼容
在 SQL 标准中没有 ALTER TEXT SEARCH DICTIONARY语句。
相关语法
CREATE TEXT SEARCH DICTIONARY, DROP TEXT SEARCH DICTIONARY
功能描述
修改文本搜索解析器的参数。
语法格式
ALTER TEXT SEARCH PARSER name RENAME TO new_name
ALTER TEXT SEARCH PARSER name SET SCHEMA new_schema
参数说明
- name:现有的文本搜索解析器的名称,可以被模式修饰;
- new_name:该文本搜索解析器的新名称;
- new_schema:该文本搜索解析器的新模式。
注意事项
ALTER TEXT SEARCH PARSER当前仅支持更改解析器名称。
只有系统管理员可以使用ALTER TEXT SEARCH PARSER。
语法兼容
在 SQL 标准中没有 ALTER TEXT SEARCH PARSER语句。
相关语法
CREATE TEXT SEARCH PARSER, DROP TEXT SEARCH PARSER
功能描述
修改本搜索模板的参数。
语法格式
ALTER TEXT SEARCH TEMPLATE name RENAME TO new_name
ALTER TEXT SEARCH TEMPLATE name SET SCHEMA new_schema
参数说明
- name:现有的文本搜索模板的名称,可以被模式修饰;
- new_name:该文本搜索模板的新名称;
- new_schema:该文本搜索模板的新模式。
注意事项
ALTER TEXT SEARCH TEMPLATE当前仅支持更改模板的名称。
只有系统管理员可以使用ALTER TEXT SEARCH TEMPLATE。
语法兼容
在 SQL 标准中没有 ALTER TEXT SEARCH TEMPLATE语句。
相关语法