CREATE TAG

CREATE TAG语句可以通过指定名称创建一个Tag。

OpenCypher兼容性

nGQL中的Tag和openCypher中的Label相似,但又有所不同,例如它们的创建方式。

  • openCypher中的Label需要在CREATE语句中与点一起创建。
  • nGQL中的Tag需要使用CREATE TAG语句独立创建。Tag更像是MySQL中的表。

前提条件

执行CREATE TAG语句需要当前登录的用户拥有指定图空间的创建Tag权限,否则会报错。

语法

创建Tag前,需要先用USE语句指定工作空间。

  1. CREATE TAG [IF NOT EXISTS] <tag_name>
  2. (
  3. <prop_name> <data_type> [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT '<comment>']
  4. [{, <prop_name> <data_type> [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT '<comment>']} ...]
  5. )
  6. [TTL_DURATION = <ttl_duration>]
  7. [TTL_COL = <prop_name>]
  8. [COMMENT = '<comment>'];
参数说明
IF NOT EXISTS检测待创建的Tag是否存在,只有不存在时,才会创建Tag。仅检测Tag的名称,不会检测具体属性。
<tag_name>每个图空间内的Tag必须是唯一的。Tag名称设置后无法修改。Tag名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用关键字和保留字
<prop_name>属性名称。每个Tag中的属性名称必须唯一。属性的命名规则与Tag相同。
<data_type>属性的数据类型,目前支持数值布尔字符串以及日期与时间
NULL | NOT NULL指定属性值是否支持为NULL。默认值为NULL
DEFAULT指定属性的默认值。默认值可以是一个文字值或Nebula Graph支持的表达式。如果插入点时没有指定某个属性的值,则使用默认值。
COMMENT对单个属性或Tag的描述。最大为256字节。默认无描述。
TTL_DURATION指定属性存活时间。超时的属性将会过期。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。默认值为0,表示属性永不过期。
TTL_COL指定要设置存活时间的属性。属性的数据类型必须是int或者timestamp。一个Tag只能指定一个字段为TTL_COL。更多TTL的信息请参见TTL

示例

  1. nebula> CREATE TAG player(name string, age int);
  2. # 创建没有属性的Tag。
  3. nebula> CREATE TAG no_property();
  4. # 创建包含默认值的Tag。
  5. nebula> CREATE TAG player_with_default(name string, age int DEFAULT 20);
  6. # 对字段create_time设置TTL为100秒。
  7. nebula> CREATE TAG woman(name string, age int, \
  8. married bool, salary double, create_time timestamp) \
  9. TTL_DURATION = 100, TTL_COL = "create_time";

创建Tag说明

尝试使用新创建的Tag可能会失败,因为创建是异步实现的。

Nebula Graph将在下一个心跳周期内完成Tag的创建,为了确保创建成功,可以使用如下方法之一:

  • SHOW TAGS语句的结果中查找新的Tag,如果找不到,请等待几秒重试。

  • 等待两个心跳周期,例如20秒。

如果需要修改心跳间隔,请为所有配置文件修改参数heartbeat_interval_secs


最后更新: August 26, 2021