ALTER TAG¶
ALTER TAG
语句可以修改 Tag 的结构。例如增删属性、修改数据类型,也可以为属性设置、修改 TTL(Time-To-Live)。
注意事项¶
- 登录的用户必须拥有对应权限才能执行
ALTER TAG
语句。详情请参见内置角色权限。
- 确保要修改的属性不包含索引,否则
ALTER TAG
时会报冲突错误[ERROR (-1005)]: Conflict!
。删除索引请参见 drop index。
- 确保新增的属性名不与已存在或被删除的属性名同名,否则新增属性会失败。
语法¶
ALTER TAG <tag_name>
<alter_definition> [[, alter_definition] ...]
[ttl_definition [, ttl_definition] ... ]
[COMMENT = '<comment>'];
alter_definition:
| ADD (prop_name data_type [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT '<comment>'])
| DROP (prop_name)
| CHANGE (prop_name data_type [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT '<comment>'])
ttl_definition:
TTL_DURATION = ttl_duration, TTL_COL = prop_name
tag_name
:指定要修改的 Tag 名称。一次只能修改一个 Tag。请确保要修改的 Tag 在当前工作空间中存在,否则会报错。
- 可以在一个
ALTER TAG
语句中使用多个ADD
、DROP
和CHANGE
子句,子句之间用英文逗号(,)分隔。
- 当使用
ADD
或CHANGE
指定属性值为NOT NULL
时,必需为该属性指定默认值,即定义DEFAULT
的值。
-
当使用
CHANGE
修改属性的数据类型时:- 仅允许修改
FIXED_STRING
和INT
类型的长度为更大的长度,不允许减少长度。 - 仅允许修改
FIXED_STRING
类型为STRING
类型、修改FLOAT
类型为DOUBLE
类型。
- 仅允许修改
示例¶
nebula> CREATE TAG IF NOT EXISTS t1 (p1 string, p2 int);
nebula> ALTER TAG t1 ADD (p3 int32, p4 fixed_string(10));
nebula> ALTER TAG t1 TTL_DURATION = 2, TTL_COL = "p2";
nebula> ALTER TAG t1 COMMENT = 'test1';
nebula> ALTER TAG t1 ADD (p5 double NOT NULL DEFAULT 0.4 COMMENT 'p5') COMMENT='test2';
// 将 TAG t1 的 p3 属性类型从 INT32 改为 INT64,p4 属性类型从 FIXED_STRING(10) 改为 STRING。
nebula> ALTER TAG t1 CHANGE (p3 int64, p4 string);
修改 Tag 说明¶
尝试使用刚修改的 Tag 可能会失败,因为修改是异步实现的。为确保数据同步,后续操作能顺利进行,请等待 2 个心跳周期(20 秒)。
如果需要修改心跳间隔,请为所有配置文件修改参数heartbeat_interval_secs
。
最后更新:
September 4, 2023