Auslöser
Azure Cosmos DB ist eine global verteilte Datenbank mit mehreren Modellen, die die Dokument-, Graph- und Schlüssel-Wert-Datenmodelle unterstützt. Der Inhalt in diesem Abschnitt dient zum Verwalten von Triggerressourcen mithilfe der SQL-API über REST.
Trigger sind Teile der Anwendungslogik, die vor dem Erstellen, Löschen und Ersetzen eines Dokuments (Prätrigger) und nach dem Erstellen, Löschen und Ersetzen eines Dokuments (nach Triggern) ausgeführt werden können. Trigger werden in JavaScript geschrieben. Pre- und Post-Trigger akzeptieren keine Parameter. Ähnlich wie gespeicherte Prozeduren unterliegen Trigger der Einschränkung einer Auflistung. Sie schränken die Anwendungslogik daher auf die Auflistung ein.
Ähnlich wie gespeicherte Prozeduren hat die Triggerressource ein festes Schema. Die Texteigenschaft enthält die Anwendungslogik. Das folgende Beispiel zeigt das JSON-Konstrukt eines Triggers:
{
"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"
}
Eigenschaft | BESCHREIBUNG |
---|---|
id | Erforderlich. Es handelt sich um eine vom Benutzer festgelegte Eigenschaft. Es handelt sich um einen eindeutigen Namen, um den Trigger zu identifizieren. Die ID darf 255 Zeichen nicht überschreiten. |
body | Erforderlich. Es handelt sich um eine vom Benutzer festgelegte Eigenschaft. Es ist der Text des Triggers. |
triggerOperation | Erforderlich. Es ist der Typ des Vorgangs, der den Trigger aufruft. Die zulässigen Werte sind: All, Insert, Replace und Delete. |
triggerType | Erforderlich. Dies gibt an, wann der Trigger ausgelöst wird. Die zulässigen Werte sind: Pre und Post. Pre-Trigger werden vor einem Vorgang ausgelöst, während post nach einem Vorgang ausgelöst wird. |
_los | Es handelt sich um eine vom System generierte Eigenschaft. Die Ressourcen-ID (_rid) ist ein eindeutiger Bezeichner, der auch für den Ressourcenstapel im Ressourcenmodell hierarchisch ist. Sie wird intern für die Platzierung und Navigation der Triggerressource verwendet. |
_Ts | Es handelt sich um eine vom System generierte Eigenschaft. Sie gibt den zuletzt aktualisierten Zeitstempel der Ressource an. Der Wert ist ein Zeitstempel. |
_Selbst | Es handelt sich um eine vom System generierte Eigenschaft. Es handelt sich um den eindeutig adressierbaren URI für die Ressource. |
_Etag | Es handelt sich um eine vom System generierte Eigenschaft, die das Ressourcen-etag angibt, das für die Steuerung der optimistischen Parallelität erforderlich ist. |
Aufgaben
Mit Triggern können Sie folgende Aktionen ausführen:
Informationen zur Funktionsweise von UDFs einschließlich des Aufrufens eines Triggers finden Sie unter Azure Cosmos DB-Programmierung: Gespeicherte Prozeduren, Trigger und UDFs.