修改密码

请输入密码
请输入密码 请输入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

搜索
    中文

      触发器

      概述

      触发器(Trigger)可以在指定schema的增、删、改操作之前或之后,触发执行预先定义好的嬴图GQL语句,从而实现与DML类操作有绑定关系的业务逻辑的自动执行。

      触发器命名规则

      触发器由用户命名,规则如下:

      • 2~64个字符
      • 以字母开头
      • 仅允许使用字母、下划线和数字(_ 、A-Z、a-z、0-9)

      一个图集中的点触发器不能重名,边触发器也不能重名,但点触发器可以和边触发器重名。

      查看触发器

      返回的表名:_nodeTrigger_edgeTrigger
      返回的表头:id | name | schema | description | when | operation | uqls(触发器ID、名称、所属schema、描述、触发时机、操作类型、触发内容的嬴图GQL语句)

      触发时机有before(前)和after(后),操作类型有insert(插入)、upsert(插入更新)、update(更新)和delete(删除)。

      // 查看当前图集中的所有触发器(分点、边两个表返回)
      show().trigger() 
      
      // 查看当前图集中的所有点触发器
      show().node_trigger()
      
      // 查看当前图集中的所有边触发器
      show().edge_trigger()
      

      创建触发器

      // 在当前图集中为指定点schema创建触发器
      create().node_trigger("<name>", @<schema>, "<desc?>")
        .<before|after>("<insert|update|upsert|delete>")
        .on("with node <subUQLs>") 
      
      // 在当前图集中为指定边schema创建触发器
      create().edge_trigger("<name>", @<schema>, "<desc?>")
        .<before|after>("<insert|update|upsert|delete>")
        .on("with edge <subUQLs>") 
      

      本例为@student创建点触发器,效果是在插入@student点之前先将name属性值里的英文字符转为大写:

      create().node_trigger("AutoUpperCase", @student).before("insert").on(
        "
        with node
        let node.name = upper(node.name) 
        "
      )
      

      删除触发器

      删除一个schema将同时删除其触发器。

      // 从当前图集中删除指定的点触发器
      drop().node_trigger("<name>")
      
      
      // 从当前图集中删除指定的边触发器
      drop().edge_trigger("<name>")
      

      本例删除点触发器AutoUpperCase:

      drop().node_trigger("AutoUpperCase")
      

      本例删除边触发器AutoFloor:

      drop().edge_trigger("AutoFloor")
      

      使用触发器

      创建好触发器以后,根据所定义的schema以及操作类型编写嬴图GQL语句。

      本例使用触发器自动从待插入边的日期中提取出年份,并插入为另一个边属性:

      // 创建边触发器AbstractYear
      create().edge_trigger("AbstractYear", @studyAt).before("insert").on(
        "
        with edge
        let edge.graduateYear = year(edge.graduateDate) 
        "
      )
      
      // 插入一条@studyAt边并返回该边
      insert().into(@studyAt).edges([{GPA: 4.3, graduateDate: "2022-06-03", _from: "STU001", _to: "UNV003"}]) as n
      return n{*}
      

      |------------------------------ @studyAt ----------------------------|
      | _uuid | _from  |  _to   | GPA |     graduateDate    | graduateYear |
      |-------|--------|--------|-----|---------------------|--------------|
      |   34  | STU001 | UNV003 | 4.3 | 2022-06-03 00:00:00 |     2022     |
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写