CREATE EDGE
CREATE EDGE
语句可以通过指定名称创建一个边类型。
OpenCypher兼容性
nGQL中的边类型和openCypher中的关系类型相似,但又有所不同,例如它们的创建方式。
- openCypher中的关系类型需要在
CREATE
语句中与点一起创建。 - nGQL中的边类型需要使用
CREATE EDGE
语句独立创建。边类型更像是MySQL中的表。
前提条件
执行CREATE EDGE
语句需要当前登录的用户拥有指定图空间的创建边类型权限,否则会报错。
语法
创建边类型前,需要先用USE
语句指定工作空间。
CREATE EDGE [IF NOT EXISTS] <edge_type_name>
([<create_definition>, ...])
[edge_type_options];
<create_definition> ::=
<prop_name> <data_type>
<edge_type_options> ::=
<option> [, <option> ...]
<option> ::=
TTL_DURATION [=] <ttl_duration>
| TTL_COL [=] <prop_name>
| DEFAULT <default_value>
边类型名称
IF NOT EXISTS
:检测待创建的边类型是否存在,只有不存在时,才会创建边类型。说明:仅检测边类型的名称,不会检测具体属性。 -
edge_type_name
:每个图空间内的边类型必须是唯一的。边类型名称设置后无法修改。允许的边类型名称规则与图空间名称规则相同,详情请参见关键字和保留字。
边类型属性
prop_name
属性名称。每个边类型中的属性名称必须唯一。
data_type
NULL | NOT NULL
指定属性值是否支持为
NULL
。默认值为NULL
。DEFAULT
指定属性的默认值。默认值可以是一个文字值或Nebula Graph支持的表达式。如果插入边时没有指定某个属性的值,则使用默认值。
TTL(Time-To-Live)
TTL_DURATION
指定属性存活时间。超时的属性将会过期。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。默认值为
0
,表示属性永不过期。TTL_COL
指定要设置存活时间的属性。属性的数据类型必须是
int
或者timestamp
。
一个边类型只能指定一个字段为TTL_COL
。更多TTL的信息请参见TTL。
示例
nebula> CREATE EDGE follow(degree int);
# 创建没有属性的边类型。
nebula> CREATE EDGE no_property();
# 创建包含默认值的边类型。
nebula> CREATE EDGE follow_with_default(degree int DEFAULT 20);
# 对字段p2设置TTL为100秒。
nebula> CREATE EDGE e1(p1 string, p2 int, p3 timestamp) \
TTL_DURATION = 100, TTL_COL = "p2";