Les déclencheurs d'opérations UQL prédéfinies peuvent être exécutés à différentes occasions telles qu'avant ou après une modification des métadonnées d'un schema spécifié, réalisant ainsi une exécution automatique de la logique métier liée aux opérations DML.
Conventions de Nommage
Le déclencheur est nommé par les développeurs. Un même nom peut être partagé entre un déclencheur de node et un déclencheur de edge, mais pas entre des déclencheurs de node, ou des déclencheurs de edge.
- 2 ~ 64 caractères
- Doit commencer par des lettres
- Autorise l'utilisation de lettres, de soulignement et de chiffres ( _ , A-Z, a-z, 0-9)
Afficher le Déclencheur
Nom du tableau renvoyé : _nodeTrigger
、_edgeTrigger
En-tête du tableau renvoyé : id
|name
|schema
|description
|when
|operation
|uqls
(L'ID, le nom, le schema, la description, le timing [before|after], le type de modification [insert|upsert|update|delete] et le contenu UQL du déclencheur)
Syntaxe:
// Pour afficher tous les déclencheurs dans l'actuel graphset (déclencheurs de node et de edge dans des tableaux séparés)
show().trigger()
// Pour afficher tous les déclencheurs de node dans l'actuel graphset
show().node_trigger()
// Pour afficher tous les déclencheurs de edge dans l'actuel graphset
show().edge_trigger()
Créer un Déclencheur
Syntaxe:
// Pour créer un déclencheur pour un certain schema de node dans l'actuel graphset
create().node_trigger("<name>", @<schema>, "<desc?>")
.<before|after>("<insert|update|upsert|delete>")
.on("with node <subUQLs>")
// Pour créer un déclencheur pour un certain schema de edge dans l'actuel graphset
create().edge_trigger("<name>", @<schema>, "<desc?>")
.<before|after>("<insert|update|upsert|delete>")
.on("with edge <subUQLs>")
Exemple: Créer un déclencheur pour les nodes de @student, convertissant la valeur de la propriété name en majuscules avant l'opération d'insertion
create().node_trigger("AutoUpperCase", @student).before("insert").on(
"
with node
let node.name = upper(node.name)
"
)
Supprimer un Déclencheur
Supprimer un schema supprimera également son déclencheur.
Syntaxe:
// Pour supprimer un certain déclencheur de node
drop().node_trigger("<name>")
// Pour supprimer un certain déclencheur de edge
drop().edge_trigger("<name>")
Exemple: Supprimer le déclencheur de node 'AutoUpperCase'
drop().node_trigger("AutoUpperCase")
Exemple: Supprimer le déclencheur de edge 'AutoFloor'
drop().edge_trigger("AutoFloor")
Utilisation du Déclencheur
Après avoir créé un déclencheur, composer et exécuter UQL basé sur le schema spécifié et le type d'opération.
Exemple: Utiliser le déclencheur pour extraire automatiquement l'année d'une propriété de edge datetime et l'insérer comme une autre propriété de edge
// Créer un déclencheur de edge 'AbstractYear'
create().edge_trigger("AbstractYear", @studyAt).before("insert").on(
"
with edge
let edge.graduateYear = year(edge.graduateDate)
"
)
// Insérer une edge de @studyAt et renvoyer cette edge
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 |