跳到主要内容

ALTER-TABLE-AND-GENERATED-COLUMN

ALTER TABLE和生成列

不支持使用ALTER TABLE ADD COLUMN增加一个生成列,不支持使用ALTER TABLE MODIFY COLUMN修改生成列信息。支持使用ALTER TABLE对生成列顺序进行修改,修改生成列名称和删除生成列。

不支持的场景报错如下:

mysql> CREATE TABLE test_alter_add_column(a int, b int) properties("replication_num"="1");
Query OK, 0 rows affected (0.14 sec)
mysql> ALTER TABLE test_alter_add_column ADD COLUMN c int AS (a+b);
ERROR 1105 (HY000): errCode = 2, detailMessage = Not supporting alter table add generated columns.
mysql> ALTER TABLE test_alter MODIFY COLUMN c int KEY AS (a+b+1);
ERROR 1105 (HY000): errCode = 2, detailMessage = Not supporting alter table modify generated columns.

REORDER COLUMN

ALTER TABLE products ORDER BY (product_id, total_value, price, quantity);

注意: 修改后的列顺序仍然需要满足生成列建表时的顺序限制。

RENAME COLUMN

ALTER TABLE products RENAME COLUMN total_value new_name;

注意: 如果表中某列(生成列或者普通列)被其它生成列引用,需要先删除其它生成列后,才能修改此生成列的名称。

DROP COLUMN

ALTER TABLE products DROP COLUMN total_value;

注意: 如果表中某列(生成列或者普通列)被其它生成列引用,需要先删除其它生成列后,才能删除此被引用的生成列或者普通列。