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.