openGauss SQL语法 —ALTER TABLE(1)

ALTER TABLE

功能描述

修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。

注意事项

  • 表的所有者被授予了表ALTER权限的用户或被授予ALTER ANY TABLE的用户有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。但要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员,且该用户是新所有者角色的成员。
  • 不能修改分区表的tablespace,但可以修改分区的tablespace。
  • 不支持修改存储参数ORIENTATION。
  • SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。
  • 列存表只支持PARTIAL CLUSTER KEY、UNIQUE、PRIMARY KEY表级约束,不支持外键等表级约束。
  • 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATISTICS、支持更改表名称、支持更改表空间、支持删除字段DROP COLUMN。对于添加的字段和修改的字段类型要求是列存支持的数据类型。ALTER TYPE的USING选项只支持常量表达式和涉及本字段的表达式,暂不支持涉及其他字段的表达式。
  • 列存表支持的字段约束包括NULL、NOT NULL、DEFAULT常量值、UNIQUE和PRIMARY KEY;对字段约束的修改当前只支持对DEFAULT值的修改(SET DEFAULT)和删除(DROP DEFAULT),暂不支持对非空约束NULL/NOT NULL的修改。
  • 不支持增加自增列,或者增加DEFAULT值中包含nextval()表达式的列。
  • 不支持对外表、临时表开启行访问控制开关。
  • 通过约束名删除PRIMARY KEY约束时,不会删除NOT NULL约束,如果有需要,请手动删除NOT NULL约束。
  • 使用JDBC时,支持通过PrepareStatement对DEFAULT值进行参数化设置。
  • 重命名时,不能与当前命名空间的synonym产生命名冲突。
  • 设置命名空间时,不能与当前命名空间的synonym产生命名冲突。
  • 仅支持在B兼容性数据库下指定COMMENT和可见性VISIBLE\INVISIBLE。
  • 使用FIRST | AFTER column_name新增列或修改列,或修改字段的字符集,会带来全表更新开销,影响在线业务。向已有的字段之间新插入列时,需要保证引用了字段的视图对象有效。
  • 删除被视图引用的表字段或修改表字段类型以及字段长度时,将引用视图和物化视图置为无效状态,在查询无效视图或通过无效视图更新、删除和新增表记录以及全量更新物化视图时,检查无效的视图和物化视图引用的表字段是否全部存在,如果存在恢复视图和物化视图的有效状态并返回查询结果,否则报错提示查询无效视图。

语法格式

  • 修改表的定义。

    ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) }
        action [, ... ];
    

    其中具体表操作action可以是以下子句之一:

    column_clause
        | ADD table_constraint [ NOT VALID ]
        | ADD table_constraint_using_index
        | VALIDATE CONSTRAINT constraint_name
        | DROP CONSTRAINT [ IF EXISTS ]  constraint_name [ RESTRICT | CASCADE ]
        | CLUSTER ON index_name
        | SET WITHOUT CLUSTER
        | SET ( {storage_parameter = value} [, ... ] )
        | RESET ( storage_parameter [, ... ] )
        | OWNER TO new_owner
        | SET TABLESPACE new_tablespace
        | SET {COMPRESS|NOCOMPRESS}
        | TO { GROUP groupname | NODE ( nodename [, ... ] ) }
        | ADD NODE ( nodename [, ... ] )
        | DELETE NODE ( nodename [, ... ] )
        | DISABLE TRIGGER [ trigger_name | ALL | USER ]
        | ENABLE TRIGGER [ trigger_name | ALL | USER ]
        | ENABLE REPLICA TRIGGER trigger_name
        | ENABLE ALWAYS TRIGGER trigger_name
        | DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE
        | DISABLE ROW LEVEL SECURITY
        | ENABLE ROW LEVEL SECURITY
        | FORCE ROW LEVEL SECURITY
        | NO FORCE ROW LEVEL SECURITY
        | ENCRYPTION KEY ROTATION
        | INHERIT parents
        | NO INHERIT parents
        | OF type_name
        | NOT OF
        | REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }
        | AUTO_INCREMENT [ = ] value
        | COMMENT {=| } 'text'
        | ALTER INDEX index_name [ VISBLE | INVISIBLE ]
        | [ [ DEFAULT ] CHARACTER SET | CHARSET [ = ] default_charset ] [ [ DEFAULT ] COLLATE [ = ] default_collation ]
        | CONVERT TO CHARACTER SET | CHARSET charset | DEFAULT [ COLLATE collation ]
        | MODIFY column_name column_type ON UPDATE CURRENT_TIMESTAMP
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值