Triggers
Azure Cosmos DB is een wereldwijd gedistribueerde database met meerdere modellen die ondersteuning biedt voor de document-, grafiek- en sleutelwaardegegevensmodellen. De inhoud in deze sectie is bedoeld voor het beheren van triggerresources met behulp van de SQL-API via REST.
Triggers zijn onderdelen van toepassingslogica die kunnen worden uitgevoerd vóór (pre-triggers) en na (post-triggers) maken, verwijderen en vervangen van een document. Triggers worden geschreven in JavaScript. Zowel pre- als post-triggers nemen geen parameters. Net als opgeslagen procedures bevinden triggers zich binnen de grenzen van een verzameling, waardoor de toepassingslogica wordt beperkt tot de verzameling.
Net als bij opgeslagen procedures heeft de triggers-resource een vast schema. De hoofdteksteigenschap bevat de toepassingslogica. In het volgende voorbeeld ziet u de JSON-constructie van een trigger.
{
"id":"PostTrigger-UpdateMetaAll",
"body": "
function updateMetadata() {
var context = getContext();
var collection = context.getCollection();
var response = context.getResponse();
var createdDocument = response.getBody();
// query for metadata document
var filterQuery = 'SELECT * FROM root r WHERE r.id = "_metadata"';
var accept = collection.queryDocuments(collection.getSelfLink(), filterQuery,
updateMetadataCallback);
if(!accept) throw "Unable to update metadata, abort";
function updateMetadataCallback(err, documents, responseOptions) {
if(err) throw new Error("Error" + err.message);
if(documents.length != 1) throw 'Unable to find metadata document';
var metadataDocument = documents[0];
// update metadata
metadataDocument.createdDocuments += 1;
metadataDocument.createdNames += " " + createdDocument.id;
var accept = collection.replaceDocument(metadataDocument._self,
metadataDocument, function(err, docReplaced) {
if(err) throw "Unable to update metadata, abort";
});
if(!accept) throw "Unable to update metadata, abort";
return;
}
}
",
"_rid":"hLEEAI1YjgcBAAAAAAAAgA==",
"_ts":1408058682,
"_self":"dbs\/hLEEAA==\/colls\/hLEEAI1Yjgc=\/udfs\/hLEEAI1YjgcBAAAAAAAAgA==\/",
"_etag":"00004100-0000-0000-0000-53ed453a0000"
}
Eigenschap | Beschrijving |
---|---|
id | Vereist. Het is een eigenschap die door de gebruiker kan worden ingesteld. Dit is de unieke naam die wordt gebruikt om de trigger te identificeren. De id mag niet langer zijn dan 255 tekens. |
Lichaam | Vereist. Het is een eigenschap die door de gebruiker kan worden ingesteld. Het is de hoofdtekst van de trigger. |
triggerOperation | Vereist. Dit is het type bewerking dat de trigger aanroept. De acceptabele waarden zijn: Alle, Invoegen, Vervangen en Verwijderen. |
triggerType | Vereist. Hiermee wordt aangegeven wanneer de trigger wordt geactiveerd. De acceptabele waarden zijn: Pre en Post. Pre-triggers worden geactiveerd vóór een bewerking, terwijl Post wordt geactiveerd na een bewerking. |
_Ontdoen | Het is een door het systeem gegenereerde eigenschap. De resource-id (_rid) is een unieke id die ook hiërarchisch is per resourcestack in het resourcemodel. Het wordt intern gebruikt voor de plaatsing en navigatie van de triggerresource. |
_Ts | Het is een door het systeem gegenereerde eigenschap. Hiermee wordt de tijdstempel van de resource voor het laatst bijgewerkt. De waarde is een tijdstempel. |
_Zelf | Het is een door het systeem gegenereerde eigenschap. Dit is de uniek adresseerbare URI voor de resource. |
_etag | Het is een door het systeem gegenereerde eigenschap die de resource-etag aangeeft die is vereist voor optimistisch gelijktijdigheidsbeheer. |
Taken
U kunt het volgende doen met triggers:
Zie Azure Cosmos DB programmeren: opgeslagen procedures, triggers en UDF's voor informatie over hoe UDF's werken, waaronder het aanroepen van een trigger.