openGauss SQL语法 —ALTER TABLE(2)

  • ADD table_constraint [ NOT VALID ]

给表增加一个新的约束。

  • ADD table_constraint_using_index

根据已有唯一索引为表增加主键约束或唯一约束。

  • VALIDATE CONSTRAINT constraint_name

验证一个使用NOT VALID选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。

  • DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]

删除一个表上的约束。

  • CLUSTER ON index_name

为将来的CLUSTER(聚簇)操作选择默认索引。实际上并没有重新盘簇化处理该表。

  • SET WITHOUT CLUSTER

从表中删除最新使用的CLUSTER索引。这样会影响将来那些没有声明索引的CLUSTER(聚簇)操作。

  • SET ( {storage_parameter = value} [, … ] )

修改表的一个或多个存储参数。

  • RESET ( storage_parameter [, … ] )

重置表的一个或多个存储参数。与SET一样,根据参数的不同可能需要重写表才能获得想要的效果。

  • OWNER TO new_owner

将表、序列、视图的属主改变成指定的用户。

  • SET TABLESPACE new_tablespace

这种形式将表空间修改为指定的表空间并将相关的数据文件移动到新的表空间。但是表上的所有索引都不会被移动,索引可以通过ALTER INDEX语法的SET TABLESPACE选项来修改索引的表空间。

  • SET {COMPRESS|NOCOMPRESS}

修改表的压缩特性。表压缩特性的改变只会影响后续批量插入的数据的存储方式,对已有数据的存储毫无影响。也就是说,表压缩特性的修改会导致该表中同时存在着已压缩和未压缩的数据。行存表不支持压缩。

  • TO { GROUP groupname | NODE ( nodename [, … ] ) }

此语法仅在扩展模式(GUC参数support_extended_features为on时)下可用。该模式谨慎打开,主要供内部扩容工具使用,一般用户不应使用该模式。

  • ADD NODE ( nodename [, … ] )

此语法主要供内部扩容工具使用,一般用户不建议使用。

  • DELETE NODE ( nodename [, … ] )

此语法主要供内部缩容工具使用,一般用户不建议使用。

  • DISABLE TRIGGER [ trigger_name | ALL | USER ]

禁用trigger_name所表示的单个触发器,或禁用所有触发器,或仅禁用用户触发器(此选项不包括内部生成的约束触发器,例如,可延迟唯一性和排除约束的约束触发器)。 应谨慎使用此功能,因为如果不执行触发器,则无法保证原先期望的约束的完整性。

  • ENABLE TRIGGER [ trigger_name | ALL | USER ]

启用trigger_name所表示的单个触发器,或启用所有触发器,或仅启用用户触发器。

  • ENABLE REPLICA TRIGGER trigger_name

触发器触发机制受配置变量session_replication_role的影响,当复制角色为“origin”(默认值)或“local”时,将触发简单启用的触发器。 配置为ENABLE REPLICA的触发器仅在会话处于“replica”模式时触发。

  • ENABLE ALWAYS TRIGGER trigger_name 无论当前复制模式如何,配置为ENABLE ALWAYS的触发器都将触发。

  • DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE

配置属于表的重写规则,已禁用的规则对系统来说仍然是可见的,只是在查询重写期间不被应用。语义为关闭/启动规则。由于关系到视图的实现,ON SELECT规则不可禁用。 配置为ENABLE REPLICA的规则将会仅在会话为"replica" 模式时启动,而配置为ENABLE ALWAYS的触发器将总是会启动,不考虑当前复制模式。规则触发机制也受配置变量session_replication_role的影响,类似于上述触发器。

  • DISABLE/ENABLE ROW LEVEL SECURITY

开启或关闭表的行访问控制开关。 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见CREATE ROW LEVEL SECURITY POLICY章节。

  • NO FORCE/FORCE ROW LEVEL SECURITY

强制开启或关闭表的行访问控制开关。 默认情况,表所有者不受行访问控制特性影响,但当强制开启表的行访问控制开关时,表的所有者(不包含系统管理员用户)会受影响。系统管理员可以绕过所有的行访问控制策略,不受影响。

  • ENCRYPTION KEY ROTATION

透明数据加密密钥轮转。只有在数据库开启透明加密功能,并且表的enable_tde选项为on时才可以进行表的数据加密密钥轮转。执行密钥轮转操作后,系统会自动向KMS申请创建新的密钥。密钥轮转后,使用旧密钥加密的数据仍使用旧密钥解密,新写入的数据使用新密钥加密。为保证加密数据安全,用户可根据加密表的新增数据量大小定期更新密钥,建议更新周期为两到三年。

  • INHERIT parent_table

将目标资料表加到指定的父资料表中成为新的子资料表。之后,针对父资料表的查询将会包含目标资料表的资料。要作为子资料表加入前,目标资料表必须已经包含父资料表的所有栏位。这些栏位必须具有可匹配的资料类别,并且如果他们在父资料表中具有NOT NULL的限制条件,那么他们必须在子资料表中也具有NOT NULL的限制条件。对于父资料表的所有CHECK限制条件,必须还有相对应的子资料表限制条件,除非父资料表中标记为不可继承。

  • NO INHERIT parent_table

从指定的父资料表的子资料表中产出目标资料表。针对父资料表的查询将不再包含从目标资料表中所产生的记录。

  • OF type_name

将表连接至一种复合类型,与CREATE TABLE OF选项创建表一样。表的字段的名称和类型必须精确匹配复合类型中的定义,不过oid系统字段允许不一样。表不能是从任何其他表继承的。这些限制确保CREATE TABLE OF选项允许一个相同的表定义。

  • NOT OF

将一个与某类型进行关联的表进行关联的解除。

  • REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }

在逻辑复制场景下,指定该表的UPDATE和DELETE操作中旧元组的记录级别。

  • DEFAULT记录主键的列的旧值,没有主键则不记录。
  • USING INDEX记录命名索引覆盖的列的旧值,这些值必须是唯一的、不局部的、不可延迟的,并且仅包括标记为NOT NULL的列。
  • FULL记录该行中所有列的旧值。
  • NOTHING不记录有关旧行的信息。

在逻辑复制场景,解析该表的UPDATE和DELETE操作语句时,解析出的旧元组由以此方法记录的信息组成。对于有主键表该选项可设置为DEFAULT或FULL。对于无主键表该选项需设置为FULL,否则解码时旧元组将解析为空。一般场景不建议设置为NOTHING,旧元组会始终解析为空。

即使指定DEFAULT或USING INDEX,当前ustore表列的旧值中也可能包含该行所有列的旧值,只有旧值涉及toast该配置选项才会生效。另外针对ustore表,选项NOTHING无效,实际效果等同于FULL。

  • COMMENT {=| } 'text'

修改表对象的注释。

  • ALTER INDEX index_name [ VISBLE | INVISIBLE ]

修改索引的可见性。

  • [ [ DEFAULT ] CHARACTER SET | CHARSET [ = ] default_charset ] [ [ DEFAULT ] COLLATE [ = ] default_collation ]

修改表的默认字符集和默认字符序为指定的值。修改不会影响表中当前已经存在的列。

  • CONVERT TO CHARACTER SET | CHARSET charset [ COLLATE collation ]

修改表的默认字符集和默认字符序为指定的值,同时将表中的所有字符类型的字段的字符集和字符序设置为指定的值,并将字段里的数据转换为新字符集编码。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值