Delen via


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.

Zie ook