Dela via


Utlösare

Azure Cosmos DB är en globalt distribuerad databas med flera modeller som stöder datamodellerna dokument, grafer och nyckelvärden. Innehållet i det här avsnittet är till för att hantera utlösarresurser med hjälp av SQL API via REST.

Utlösare är delar av programlogik som kan köras före (förutlösare) och när (efterutlösare) skapas, tas bort och ersätts av ett dokument. Utlösare skrivs i JavaScript. Både pre- och post-utlösare tar inga parametrar. Precis som lagrade procedurer ligger utlösare inom gränserna för en samling, vilket begränsar programlogik till samlingen.

Precis som med lagrade procedurer har utlösarresursen ett fast schema. Brödtextegenskapen innehåller programlogik. I följande exempel visas JSON-konstruktionen för en utlösare.

{  
"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"  
}  
  
Egenskap Beskrivning
id Krävs. Det är en användaruppsättningsbar egenskap. Det är det unika namn som används för att identifiera utlösaren. ID:t får inte överstiga 255 tecken.
Kroppen Krävs. Det är en användaruppsättningsbar egenskap. Det är utlösarens brödtext.
triggerOperation Krävs. Det är den typ av åtgärd som anropar utlösaren. De godkända värdena är: Alla, Infoga, Ersätt och Ta bort.
triggerType Krävs. Detta anger när utlösaren utlöses. De godkända värdena är: Pre och Post. Pre utlöser eld före en åtgärd medan Post utlöses efter en åtgärd.
_Bli Det är en systemgenererad egenskap. Resurs-ID :t (_rid) är en unik identifierare som också är hierarkisk per resursstacken i resursmodellen. Den används internt för placering och navigering av utlösarresursen.
_Ts Det är en systemgenererad egenskap. Den anger resursens senast uppdaterade tidsstämpel. Värdet är en tidsstämpel.
_Själv Det är en systemgenererad egenskap. Det är den unikt adresserbara URI:n för resursen.
_Etag Det är en systemgenererad egenskap som anger resursetaggen som krävs för optimistisk samtidighetskontroll.

Aktiviteter

Du kan göra följande med utlösare:

Information om hur UDF:er fungerar, inklusive att anropa en utlösare, finns i Azure Cosmos DB-programmering: Lagrade procedurer, utlösare och UDF:er.

Se även