修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v5.0
搜索
    v5.0

      约束

      概述

      UQL的约束可以对进入当前图集的数据施加限制规则。如果约束与数据修改操作有冲突,需放弃相关修改。

      UQL支持以下约束:

      • EDGE KEY:确保属性存在且属性值唯一。
      • NOT NULL:确保属性没有null值。

      创建约束

      使用语句CREATE CONSTRAINT为一或多个属性创建约束。约束创建以作业形式执行,稍后可使用show().job(<id?>)来验证是否创建成功。

      CREATE CONSTRAINT <constraintName> <ifNotExistsFlag?>
      FOR <aliasDecl>
      REQUIRE <alias>.<property> <constraintType>
      OPTIONS {
        <item?>: {<key?>: <value?>}
      }
      

      详情

      • <constraintName>是约束的唯一名称。如果同名约束存在,则创建失败。
      • <ifNotExistsFlag?>(即IF NOT EXISTS)为可选项,如果给定的<constraintName>已存在,或已有一个约束存在且该约束类型只允许有一个约束,则不会进行创建操作,且在不报错的情况下完成操作。
      • 语句OPTIONS为可选项,可用来提供额外配置。

      创建约束需要一些时间,因为系统需扫描全部现有数据,以确保其符合约束要求。如果现有数据与约束不符,则约束创建失败。此外,为确保数据一致性,创建约束时,会暂停其他数据修改操作。

      一旦约束应用于某个属性,任何违反该约束的数据修改操作将引发报错。

      EDGE KEY

      EDGE KEY限制仅应用于边属性,用于确保指定属性:

      • 存在于所有边schema中。
      • 在全图没有重复值。
      • 不存在null值。

      涉及多个属性的复合EDGE KEY约束,其属性值的组合必须唯一。

      创建EDGE KEY约束时,要求每个分片内的属性值唯一,但不同分片间可以存在重复值。但请注意,应用EDGE KEY约束后,任何数据修改操作必需遵从全局唯一原则。

      一个图集只能创建一条EDGE KEY约束,并应用于所有边schema。EDGE KEY约束在指定属性和边的_uuid间建立映射。与此同时,将指定属性加载至缓存,用于加速查询。

      // 创建单属性edge key约束
      CREATE CONSTRAINT <constraintName> <ifNotExistsFlag?>
      FOR ()-[<alias>]-()
      REQUIRE <alias>.<property> IS EDGE KEY
      OPTIONS {
        type: {<property?>: <type?>}
      }
      
      // 创建复合edge key约束
      CREATE CONSTRAINT <constraintName> <ifNotExistsFlag?>
      FOR ()-[<alias>]-()
      REQUIRE (<alias>.<property1>, <alias>.<property2>, ...) IS EDGE KEY
      OPTIONS {
        type: {<property1?>: <type1?>, <property2?>: <type2?>, ...}
      }
      

      详情

      • 使用OPTIONS语句为所有指定属性定义期望的类型,这些类型必须与数据库中对应属性类型一致。如果忽略OPTIONS语句,所有指定属性默认为string类型。
      • EDGE KEY约束不支持以下属性类型:decimallistset

      为边属性notes创建EDGE KEY约束,要求每个notes属性为string类型:

      CREATE CONSTRAINT edge_key
      FOR ()-[e]-() REQUIRE e.notes IS EDGE KEY
      

      为边属性score创建EDGE KEY约束,要求每个score属性为float类型:

      CREATE CONSTRAINT edge_key
      FOR ()-[e]-() REQUIRE e.score IS EDGE KEY
      OPTIONS {
        type: {score: "float"}
      }
      

      为属性notesscore创建EDGE KEY约束,要求每个notes属性为string类型,每个score属性为float类型:

      CREATE CONSTRAINT edge_key
      FOR ()-[e]-() REQUIRE (e.notes, e.score) IS EDGE KEY
      OPTIONS {
        type: {notes: "string", score: "float"}
      }
      

      如果当前没有EDGE KEY约束,则创建一个;若已有约束,创建操作不报错:

      CREATE CONSTRAINT edge_key IF NOT EXIST
      FOR ()-[e]-() REQUIRE e.notes IS EDGE KEY
      

      NOT NULL

      默认情况下,属性可以存在null值。NOT NULL约束则强制要求属性不接受null值,确保属性永远存在非空值。每个NOT NULL约束仅能指定一个属性。

      // 为一个点属性创建not null约束
      CREATE CONSTRAINT <constraintName> <ifNotExistsFlag?>
      FOR (<alias>:<schema>)
      REQUIRE <alias>.<property> IS NOT NULL
      
      // 为一个边属性创建not null约束
      CREATE CONSTRAINT <constraintName> <ifNotExistsFlag?>
      FOR ()-[<alias>:<schema>]-()
      REQUIRE <alias>.<property> IS NOT NULL
      

      为点属性@user.name创建NOT NULL约束:

      CREATE CONSTRAINT not_null_user_name
      FOR (u:user) REQUIRE u.name IS NOT NULL
      

      在未与其他约束重名的前提下,为边属性@likes.weight创建NOT NULL约束,命名为not_null_weight;若有重名,不要引发报错:

      CREATE CONSTRAINT not_null_weight IF NOT EXIST
      FOR ()-[e:likes]-() REQUIRE e.weight IS NOT NULL
      

      显示约束

      获取在当前图集创建的所有约束信息:

      // 显示所有约束
      show().constraint()
      
      // 显示所有针对点属性的约束
      show().node_constraint()
      
      // 显示所有针对边属性的约束
      show().edge_constraint()
      

      约束信息展示在表_nodeConstraint和表_edgeConstraint中。表中各字段提供了每个约束的基础信息:

      字段
      描述
      name 约束名称
      type 约束类型
      schema 应用约束的点schema或边schema
      properties 应用约束的边属性
      status 约束的当前状态,包括DONECREATING

      删除约束

      使用语句DROP CONSTRAINT删除约束。

      DROP CONSTRAINT <constraintName> <ifExistsFlag?>
      

      详情

      • <constraintName>为约束名称。如果指定的约束名称不存在,则删除失败。
      • <ifExistsFlag?>(即IF EXISTS)为可选项,如果未发现指定的<constraintName>,则不会进行任何删除操作,并在不报错的情况下完成操作。

      删除名为not_null_user_name的约束:

      DROP CONSTRAINT not_null_user_name
      

      删除名为user_name的约束,如果约束不存在,不引发报错:

      DROP CONSTRAINT not_null_user_name IF EXISTS
      

      其他限制

      重命名属性

      应用了NOT NULL约束的属性可以重命名。但应用了EDGE KEY约束的属性不可重命名。

      删除属性

      应用了任何约束的属性无法删除,除非所有相关约束均已删除。

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写